【发布时间】:2017-04-17 16:51:18
【问题描述】:
在类实例化和 TestDriven.Net(v4.0.3478) 或 XUnit(v2.2.0)、RhinoMocks(v3.6.1) 和 structuremap.automocking(v4.0.0.315) 方面遇到了一些问题。
鉴于此代码:
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] 属性有效,一切正常。
【问题讨论】:
标签: unit-testing rhino-mocks xunit testdriven.net structuremap-automocking