使用VS 2010,NUnit,Typemock,Entity Framework ......
我使用NUnit / Typemock时遇到了一些奇怪的问题。我对测试世界相对较新,所以它可能是初学者的错误。这就是我遇到的问题。
首先是什么测试并不重要。我可以选择一个特定的测试。如果它是第一个运行的,则在首次执行时失败。它会重新运行。
这是一个有问题的示例类。但是班级并不重要。无论先运行什么测试都有这个问题。异常代码只是测试Typemock被加载的东西。它在WhenCalled上失败了。
[TestClass, Isolated]
public class FirstTest
{
[TestMethod]
public void TestMe()
{
Exception e = new TypeMock.ArrangeActAssert.NestedCallException();
Isolate.WhenCalled(() => UnitOfWorkManager.GetCurrentSession(null)).WillReturn(null);
Assert.IsTrue(true);
}
}
以下是错误消息。
HCSO.ESL.Test.Fakes.FirstTest.TestMe: TypeMock.ArrangeActAssert.NestedCallException: * WhenCalled不支持使用属性调用作为参数。 - 修复此传递false而不是AssemblyReader.IsDotNetFile
Isolate.WhenCalled(()=> ObjUnderTest.MethodUnderTest(argument))...;
示例 - 这不起作用:
(结束错误消息)
任何人都知道为什么第一次测试总是失败但在重新运行时运行良好?关于如何装载装配的东西?
(编辑)其他详情:
版本: Typemock Isolator:6.0.10.0 Visual Studio:10.0.30319.1
另外,我添加了简化的测试代码。这样您就可以看到正在测试的代码。是的,这个测试第一次失败,然后在每次运行后传递。
[TestClass, Isolated]
public class FirstTest
{
public static int DummyCall(int i)
{
return 0;
}
[TestMethod]
public void TestMe()
{
Exception e = new TypeMock.ArrangeActAssert.NestedCallException();
//Isolate.WhenCalled(() => UnitOfWorkManager.GetCurrentSession(null)).WillReturn(null);
Isolate.WhenCalled(() => FirstTest.DummyCall(-1)).WillReturn(1);
Assert.IsTrue(true);
}
}
答案 0 :(得分:2)
我在Typemock工作,
这看起来很奇怪,因为这绝对不是来自它外观的嵌套调用。 您能否尝试通过电子邮件向我们发送一个小型解决方案,向support@typemock.com展示问题?
什么是UnitOfWorkManager
?这是属于EF的类,还是你的代码?
另外,您使用的是什么版本的Isolator?
答案 1 :(得分:2)
我解决了这个问题。正如我所料,这部分是一个新手的错误。在NUnit内部有一个设置来确定如何隔离组件。默认选项是在与NUnit相同的进程中运行测试。我尝试在每个组件的单独过程中更改隔离,问题就消失了。
重现错误。 *确保选择“直接在NUnit进程中运行测试”的NUnit选项。 *关闭NUnit(只是为了确保使用设置) *从VS中启动NUnit。 *选择包含Isolate.WhenCalled()的测试 *先运行该测试。
感谢您的帮助。
[编辑:更新] 如果其他人遇到此问题,请更新此内容。
我发现在NUnit客户端中如果我设置了以下选项,一切都很好。
在“设置”下: 测试装载机 - >组装隔离 - >默认流程模型 - > 直接在NUnit流程中运行测试。
测试加载器 - >组装隔离 - >默认域名使用 - > 每个程序集使用单独的AppDomain