У нас есть проект с открытым исходным кодом для запуска удаленных тестов XUnit.Net. Особенность заключается в том, что тело теста предназначено для запуска в удаленном процессе, и результаты сериализуются обратно в визуальную студию. Проект можно найти здесь.Как отключить параллельное выполнение теста для всех тестов, помеченных пользовательскими фактами в XUnit.Net
https://github.com/Weingartner/XUnitRemote
Например, тест может быть как
[SampleProcessFact]
public void OutOfProcess()
{
_Output.WriteLine("Process name: " + Process.GetCurrentProcess().ProcessName);
Assert.Equal(1,1);
}
SampleProcessFact является пользовательский атрибут объявлен так.
[AttributeUsage(AttributeTargets.Method)]
[XunitTestCaseDiscoverer("XUnitRemote.Test.SampleProcessFactDiscoverer", "XUnitRemote.Test")]
public class SampleProcessFactAttribute : FactAttribute { }
[AttributeUsage(AttributeTargets.Method)]
[XunitTestCaseDiscoverer("XUnitRemote.Test.ScheduledSampleProcessFactDiscoverer", "XUnitRemote.Test")]
public class ScheduledSampleProcessFactAttribute : FactAttribute { }
[AttributeUsage(AttributeTargets.Method)]
[XunitTestCaseDiscoverer("XUnitRemote.Test.SampleProcessTheoryDiscoverer", "XUnitRemote.Test")]
public class SampleProcessTheoryAttribute : TheoryAttribute { }
См. https://github.com/Weingartner/XUnitRemote/blob/master/XUnitRemote.Test/XUnit.cs#L26 для исходного кода.
Однако нам нужна опция, чтобы, если я помечаю свой тестовый пример как SampleProcessFact, тогда тестовый бегун будет запускать тесты последовательно.
Я знаю, что я могу пометить все мои тестовые случаи с TestCollection (строка идентификатора) и он должен предотвратить последовательный ход, но это должно быть воплощен в SampleProcessFact тега, если это возможно. Это должно работать во всех тестовых сценариях во всех сборках.
Мой вопрос касается только отрыва тестов от визуальной студии. Удаленная часть работает нормально, но визуальная студия вызывает наш удаленный тестовый корпус параллельно для всех тестов.
Любые идеи?