在类实例化和 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]
属性有效,一切正常。