【发布时间】:2016-06-10 08:41:34
【问题描述】:
我们有一个用于运行远程 XUnit.Net 测试的开源项目。其特点是测试主体设计为在远程进程上运行,并将结果序列化回 Visual Studio。该项目可以在这里找到。
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(string id) 标记我的所有测试用例,它应该可以防止顺序运行,但是这应该封装在 SampleProcessFact 标记中,如果可能的。这应该适用于所有程序集中的所有测试用例。
我的问题仅与从 Visual Studio 启动测试有关。远程部分工作正常,但 Visual Studio 正在为所有测试并行调用我们的远程测试用例引擎。
有什么想法吗?
【问题讨论】:
标签: c# .net multithreading xunit