Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NUnit和Typemock的奇怪问题_C#_Visual Studio 2010_Nunit_Typemock - Fatal编程技术网

C# NUnit和Typemock的奇怪问题

C# NUnit和Typemock的奇怪问题,c#,visual-studio-2010,nunit,typemock,C#,Visual Studio 2010,Nunit,Typemock,使用VS2010、NUnit、Typemock、实体框架 我在使用NUnit/Typemock时遇到了一点奇怪的问题。我对测试行业比较陌生,所以这可能是初学者的错误。这就是我面临的问题 编写了测试项目 从Visual Studio中启动NUnit 从NUnit客户端应用程序中运行测试。第一次运行,第一次测试总是失败 重新运行并测试通过 先做什么测试并不重要。我可以选择一个特定的测试。如果它是第一个运行的,则在第一次执行时失败。它将继续重新运行 这是一个有问题的示例类。但是课程并不重要。首先运

使用VS2010、NUnit、Typemock、实体框架

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

  • 编写了测试项目
  • 从Visual Studio中启动NUnit
  • 从NUnit客户端应用程序中运行测试。第一次运行,第一次测试总是失败
  • 重新运行并测试通过
先做什么测试并不重要。我可以选择一个特定的测试。如果它是第一个运行的,则在第一次执行时失败。它将继续重新运行

这是一个有问题的示例类。但是课程并不重要。首先运行的任何测试都有这个问题。异常代码只是用来测试正在加载的Typemock的东西。它在被调用时失败

[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


  • 示例-这将起作用:
  • MyObj参数=Something.Other().GetStuff()
  • 孤立.WhenCalled(()=>ObjUnderTest.MethodUnderTest(参数))


  • 示例-这不起作用:

  • 孤立.WhenCalled(()=>ObjUnderTest.MethodUnderTest(Something.Other().GetStuff())
(结束错误消息)


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

(编辑)其他详细信息:


版本: Typemock隔离器: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);
    }
}
我在Typemock工作

这看起来很奇怪,因为从外观上看,这绝对不是嵌套调用。 你能试着给我们发一个小的解决方案给我们吗support@typemock.com?

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

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

我在Typemock工作

这看起来很奇怪,因为从外观上看,这绝对不是嵌套调用。 你能试着给我们发一个小的解决方案给我们吗support@typemock.com?

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


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

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

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

谢谢你的帮助

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

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

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


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

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

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

谢谢你的帮助

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

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

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


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

某些东西肯定是关闭的,我怀疑在第一次调用
时,在
过程中某个地方有一个静态类正在初始化,由于某种原因,它把事情搞砸了。是否有可能建立一个在线会话,尝试在线解决这个问题?请联系我们support@typemock.comSomething是绝对关闭的,我怀疑在第一次调用
时,在某个地方有一个静态类正在初始化,由于某种原因,它把事情搞砸了。是否有可能建立一个在线会话,尝试在线解决这个问题?请联系我们support@typemock.comThat很有趣,我想我以前从未遇到过这种情况。很高兴看到事情解决了!如果您认为这可能是一个Typemock错误,并且您在复制它时遇到困难,我愿意在我这方面尝试一些东西。否则,它对我有用,所以我很高兴。太好了!我将尝试使用您提供的步骤重新编程。我也有你的电子邮件在我们的支持,我会与你联系,如果我有任何问题!谢谢:)这很有趣,我想我以前从未遇到过这种情况。很高兴看到事情解决了!如果您认为这可能是一个Typemock错误,并且您在报告时遇到问题