2017-01-26 83 views
2

我有一组需要共享状态的xunit.net测试。希望我希望这些测试能够并行运行。所以,我想亚军的事:在与XUnit.net并行运行的测试之间共享状态

  • 使用夹具

当读取的xUnit的文档创建并行所有测试共享夹具

  • 运行,它说,到在测试类之间共享状态,我需要定义一个“集合夹具”,然后将所有测试类放入新的集合中(例如:[Collection("Database collection")])。但是,当我把我的测试类在同一个夹具,他们不并行运行了,所以它击败目的:(

    是否有一个内置的方式做我想做的的xUnit?

    我的后备将是把我的共享状态放到一个静态类中

  • +0

    你能分享一个你想测试的例子吗? –

    +0

    例如,我需要在数据库中创建一个用户,并且该用户将以只读模式通过一组将并行运行的测试进行共享。 – mabead

    回答

    0

    你不想在测试之间共享状态,你只是想共享测试运行所需的设置。在这里做xUnit(有很多例子):http://xunit.github.io/docs/shared-context.html

    如果你碰巧使用了Entity Framework,我也在这里写了一些关于它的东西: https://robertengdahl.blogspot.com/2017/01/testing-against-entityframework-using.html

    +0

    你说得对。我用错了词。我想分享*设置*而不是*状态*。这就是说,如果我们看看你的第一个链接,我想要做的是一个CollectionFixture。要为多个测试类重用**相同的**集合夹具(仅实例化一次),所有测试类必须放置在相同的[集合]中。那么,如果他们在同一个[Collection]中,他们将不会并行运行。 – mabead

    +0

    对不起,我忘了你想要并行运行这些。由于并行运行不需要相同的灯具实例,因此您可以将灯具实例作为测试类的成员变量,如第二个链接所推荐和显示的那样。您将获得并行测试的速度,以及隔离测试的安全性。 –