尝试在LINQPad中使用TypeMock运行nunit测试时出错

时间:2012-11-03 22:48:26

标签: nunit linqpad typemock

我喜欢LINQPad并且每天都使用它。我一直试图找到一种方法在LINQPad中使用nunit和TypeMock创建和运行ad-hoc测试一段时间。

所以我偶然发现了一些结果,但仍然缺少一些链接。

这就是我所做的:

  1. 在linqpad中创建一个新查询,添加对NUnit和Typemock程序集的引用。

  2. 创建一个Nunit跑步者。 (感谢http://www.paraesthesia.com/archive/2008/02/21/template-for-quick-typemock-testing.aspx

  3. 添加几个环境变量以启用Typemock分析器。

  4. 此时,我可以让Nunit和Typemock使用一些手动步骤(需要将nunit和typemock dll复制到执行目录,例如\ AppData \ Local \ Temp \ 1 \ LINQPad \ skbidgcw)。

    但是如果我将我们的程序集(我想测试)添加到LINQPad脚本中,测试将失败,因为NUnit无法在执行目录中找到程序集。我甚至尝试将所有DLL复制到那个,但由于:

    ,这也会失败

    System.IO.FileNotFoundException : Could not load file or assembly 'LINQPad, Version=1.0.0.0, Culture=neutral, PublicKeyToken=21353812cd2a2db5' or one of its dependencies. The system cannot find the file specified.

    我的linqpad查询位于:http://pastebin.com/QtPNCv25

    真的很感激任何帮助!

    作为旁注,我也尝试使用 NUnitLite ,虽然它运行Nunit测试很漂亮,我找不到让它与Typemock一起工作的方法,它抛出错误说“Typemock隔离器需要与Coverage Tool链接以运行“。

1 个答案:

答案 0 :(得分:1)

终于找到了一种方法,可以使用NUnitLite做我想做的事。

  • 将以下环境变量添加到我的系统以启用Typemock分析器。
  

COR_ENABLE_PROFILING = 0×1

     

COR_PROFILER = {B146457E-9AED-4624-B1E5-968D274416EC}

(NUnitLite可能已经在另一个AppDomain中运行测试,因此通过LINQPad设置环境变量没有启用分析器;如果在NUnitLite中有切换这样做可能会被绕过,但我还没有研究过。 )

  • 将TypeMock.dll和Typemock.ArrangeActAssert.dll放在Linqpad的插件文件夹中。

  • 创建新查询并通过Nuget添加NUnitLite。添加必要的命名空间。

现在以下内容应该有效。

void Main()
{
    new NUnitLite.Runner.TextUI().Execute( new[]{"-noheader"} );
}

// Define other methods and classes here
[Test, Isolated]
public void TestMock()
{
    Isolate.WhenCalled( () => DateTime.Now ).WillReturn( DateTime.Today );

    var dt = DateTime.Now;

    Assert.AreEqual( DateTime.Today, dt );
}

现在我的生活应该相当容易。谢谢!