首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XUnit.net:并行运行理论

XUnit.net:并行运行理论
EN

Stack Overflow用户
提问于 2015-10-22 14:45:48
回答 1查看 1K关注 0票数 1

xunit.net支持并行测试执行。

我的测试是参数化的(理论)。我遇到的每一个测试都是不同的。下面是一个例子:

代码语言:javascript
复制
public class TestCase1
{
    [Theory]
    [InlineData("mssql")]
    [InlineData("oracle")]
    [InlineData("pgsql")]
    [InlineData("sqlite")]
    public void DoTests(string storage) {}
}
public class TestCase2
{
    [Theory]
    [InlineData("mssql")]
    [InlineData("oracle")]
    [InlineData("pgsql")]
    [InlineData("sqlite")]
    public void DoTests(string storage) {}
}

默认情况下,所有测试都执行平行地。可以将它们分组到集合中(借助Collection属性)。

我不能并行地运行所有测试,因为每个测试用例都有自己的db模式。因此,我将所有测试放入具有程序集级别属性的单个集合中:

代码语言:javascript
复制
[assembly: CollectionBehavior(CollectionBehavior.CollectionPerAssembly)]

但这也意味着不同存储的测试也是连续运行的。

我想要的是并行地对不同的存储运行测试,但对串行的单个存储运行测试:

=> TestCase1.DoTest("mssql") => TestCase2.DoTest("mssql")

=> TestCase1.DoTest("oracle") => TestCase2.DoTest("oracle")

诸若此类

在xunit.net中有可能吗?

更新:(把它放在这里,因为注释中不支持代码)。正如@BradWilson建议的那样,可以将测试与派生类分开:

代码语言:javascript
复制
public class TestCase1
{
    public void DoTests(string storage) {}
}
public class TestCase1_MSSQL
{
    [Fact]
    public void DoTests(string storage) 
    {
        DoTests("mssql");
    }
}
public class TestCase1_Oracle
{
    [Fact]
    public void DoTests(string storage) 
    {
        DoTests("oracle");
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-23 17:02:09

我不会用理论和内联数据来做这件事;相反,我会用抽象基类和每个存储方法的具体测试类来实现这一点。这样你就能得到你想要的分组了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33283880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档