【问题标题】:Execute test sequentially with Xunit in dotnet core在dotnet core中使用Xunit顺序执行测试
【发布时间】:2020-08-29 21:01:30
【问题描述】:

我想按顺序运行我的测试,因为它们会更改同一个数据库并且可能会相互影响。我在互联网上尝试了很多解决方案,但没有一个适合我。这些解决方案在链接“Execute unit tests serially (rather than in parallel)”中进行了描述。 我现在有点卡住了。有人能对这个问题有什么想法吗?

【问题讨论】:

    标签: .net-core xunit sequential


    【解决方案1】:

    来自文档:

    默认情况下,每个测试类都是一个唯一的测试集合。
    同一测试类中的测试不会彼此并行运行。

    针对不同类的测试

    如果我们需要指出不应运行多个测试类 相互平行,然后我们将它们放入同一个测试中 收藏。
    这只是用装饰每个测试类的问题 将它们放入相同的唯一命名测试的属性 收藏

    [Collection("Database tests")]
    public class DeleteTests
    {
        [Fact]
        public void RemovesItemFromDatabase()
        {
            // test
        }
    }
    
    [Collection("Database tests")]
    public class InsertTests
    {
        [Fact]
        public void InsertsItemToDatabase()
        {
            // test
        }
    }
    

    【讨论】:

    • 我尝试过这种方法。装饰对我不起作用。同一类中的测试仍在并行运行。
    • @ThanhBinhNguyen,嗯,我怀疑这是一个案例。您可能需要分享您的代码并解释您是如何观察到同一类中的测试并行执行的。
    • 不幸的是,将代码放在这里并不容易,因为我的测试需要与多个 docker 程序交互。为了观察执行情况,我在每次测试之前和之后都放置了调试消息。我看到的是,有时一个测试在另一个测试进入执行之前还没有完成。这就是我观察并行性的方式。尽管如此,当我给你写这封邮件时,我已经设法强制以顺序方式执行我的测试(但不是上面描述的装饰)。到目前为止,我还没有注意到任何并行行为,所以希望我做得对。
    • Thanh Binh Nguyen 最终哪种解决方案对您有用?
    猜你喜欢
    • 2018-11-16
    • 2021-11-17
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    相关资源
    最近更新 更多