首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NUnit和Typemock的奇怪问题

NUnit和Typemock的奇怪问题
EN

Stack Overflow用户
提问于 2011-07-21 19:30:13
回答 2查看 1.6K关注 0票数 1

使用VS 2010,NUnit,Typemock,实体框架.

我在使用NUnit/Typemock时遇到了一些奇怪的问题。我对测试世界比较陌生,所以这可能是初学者的错误。这就是我遇到的问题。

compiled.

  • Launch

  • 测试项目是Visual中的NUnit,

  • 从NUnit客户端应用程序中运行测试。首次运行,第一次测试总是失败。

  • 重新运行并通过测试。

什么是第一个测试并不重要。我可以选择一个特殊的测试。如果它是第一个运行的,它将在第一个执行时失败。它会继续运行。

这是一个有问题的示例类。但这门课并不重要。不管先运行什么测试,都有这个问题。异常代码只是用来测试正在加载的Typemock。它在WhenCalled上失败了。

代码语言:javascript
复制
[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不支持使用属性调用作为参数。-修复这个pass而不是AssemblyReader.IsDotNetFile

Something.Other().GetStuff();

  • Isolate.WhenCalled(()

  • 示例--这是可行的:

  • MyObj参数= => ObjUnderTest.MethodUnderTest(argument))...;

work:

  • Isolate.WhenCalled(()

  • 示例--这不会是 => ObjUnderTest.MethodUnderTest(Something.Other().GetStuff()))...;

(结束错误消息)

有谁知道为什么第一次测试总是失败,但在重新运行时运行良好?程序集是如何加载的?

(编辑)其他详细资料:

版本: Typemock Isolator: 6.0.10.0 Visual Studio: 10.0.30319.1

此外,我还添加了简化的测试代码。这样,您就可以看到正在测试的代码。是的,这个测试第一次失败,在那之后的每一次运行都会通过。

代码语言:javascript
复制
[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);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2011-07-21 19:41:28

我在Typemock工作,

这看起来很奇怪,因为从外观上看,这绝对不是一个嵌套调用。请您试着用电子邮件向support@typemock.com展示这个问题的一个小解决方案好吗?

UnitOfWorkManager是什么?这是属于EF的类,还是您的代码?

另外,您使用的是什么版本的隔离器?

票数 2
EN

Stack Overflow用户

发布于 2011-07-22 15:07:43

我解决了这个问题。正如我所料,这在一定程度上是新手犯的错误。在NUnit内部有一个设置来确定程序集是如何隔离的。默认选项是在与NUnit相同的进程中运行测试。我试着在每个程序集中单独的进程中更改隔离,问题就消失了。

复制错误。*确保选中了“在NUnit进程中直接运行测试”的NUnit选项。*关闭NUnit (只是为了确保使用设置)*从VS内部启动NUnit。*选择包含Isolate.WhenCalled() *的测试,首先运行该测试。

谢谢你的帮助。

编辑:如果其他人有此问题,请更新此更新。

我发现,在NUnit客户机中,如果设置以下选项,一切都很好。

在“设置:测试加载器”->程序集隔离->默认流程模型-> 直接在NUnit process中运行测试。

测试加载器->程序集隔离->默认域使用-> 每个程序集使用单独的AppDomain

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

https://stackoverflow.com/questions/6781635

复制
相关文章

相似问题

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