首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XUnit、RhinoMocks或TestDriven.Net问题

XUnit、RhinoMocks或TestDriven.Net问题
EN

Stack Overflow用户
提问于 2017-04-17 16:51:18
回答 1查看 384关注 0票数 0

在类实例化和TestDriven.Net(v4.0.3478)或XUnit(v2.2.0)、RhinoMocks(v3.6.1)和structuremap.automocking(v4.0.0.315)方面有一些问题。

鉴于这一守则:

代码语言:javascript
复制
public class Tests1
{
    [Fact]
    public void passing_test()
    {
        var mocker = new RhinoAutoMocker<Subject>();
        mocker.Get<IData>().Stub(x => x.Strings).Return(new List<string> {""});

        var result = mocker.ClassUnderTest.GetStrings();

        result.Count().ShouldEqual(1);
    }
}

public class Tests2
{
    [Fact]
    public void passing_test()
    {
        var mocker = new RhinoAutoMocker<Subject>();
        mocker.Get<IData>().Stub(x => x.Strings).Return(new List<string> {""});

        var result = mocker.ClassUnderTest.GetStrings();

        result.Count().ShouldEqual(1);
    }
}

public class Subject
{
    private readonly IData _data;

    public Subject(IData data)
    {
        _data = data;
    }

    public IEnumerable<string> GetStrings()
    {
        return _data.Strings;
    }
}

public interface IData
{
    IEnumerable<string> Strings { get; set; }
}

当我右键单击特定测试方法或特定类定义的-> Run Test(s)时,所有测试都运行良好。

当我右键单击项目、包含测试的文件夹或上述类的命名空间定义时,测试将失败。

错误是NullReferenceException,当执行断言时,它似乎是存根的数据。这是随机的,有时Tests1.passing_test失败,有时Tests2.passing_test失败。永远不会两者兼得。

是否认为它与RhinoAutoMocker和/或测试夹具之间没有重置的MockRepository有关?

更新:简化代码以显示问题,并且给定代码是完整的,使用NUnit [Test]而不是XUnit [Fact]属性工作,一切都正常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-05 11:41:13

在您的示例中,您有两个独立的测试类。默认情况下,xUnit v2将并行运行这些测试。

我也经历过同样的问题,但在我的例子中使用了静态MockRepository.GenerateMock。在并行测试中使用的静态类会导致异常。测试失败表面上的随机性取决于哪个测试首先运行。

我可以看到有两种选择。1.在单个类中进行测试--不太可行-- 2.使用XUnit Collection属性将所有测试类放在同一个集合中--这对我来说是有效的。

请参阅:http://xunit.github.io/docs/running-tests-in-parallel.html

另一种选择是在测试程序集中使用以下属性关闭xUnit的并行性

[assembly: CollectionBehavior(DisableTestParallelization = true)]

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

https://stackoverflow.com/questions/43455729

复制
相关文章

相似问题

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