【问题标题】:Error trying to run nunit tests with TypeMock in LINQPad尝试在 LINQPad 中使用 TypeMock 运行 nunit 测试时出错
【发布时间】:2012-11-03 22:48:25
【问题描述】:

我喜欢 LINQPad 并且每天都在使用它。一段时间以来,我一直在尝试寻找一种方法来使用 nunit 和 TypeMock 在 LINQPad 中创建和运行临时测试。

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

这是我所做的:

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

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

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

此时,我可以让 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 Isolator needs与 Coverage Tool 联动运行”。

【问题讨论】:

  • 如果您在 Edit | 中禁用程序集引用阴影是否有任何区别?偏好 |高级 |执行?
  • 不,它没有。仍然得到相同的“System.IO.FileNotFoundException:无法加载文件或程序集'LINQPad,Version = 1.0.0.0 ...”。

标签: nunit linqpad typemock


【解决方案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 );
}

现在我的生活应该会轻松很多。谢谢!

【讨论】:

    猜你喜欢
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2016-03-23
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多