2010-05-26 186 views
21

我们最近从Visual Studio 2008升级到了Visual Studio 2010.作为我们代码库的一部分,我们有一组非常大的NUnit测试。我们希望能够在Visual Studio中运行这些单元测试,但已启用代码覆盖范围。我们有ReSharper,因此可以在Visual Studio中运行测试,但它不允许代码覆盖工具完成它的工作并生成覆盖率统计信息。在代码覆盖范围内运行Visual Studio 2010中的NUnit测试

有什么办法可以使这项工作,或者我们将不得不将测试转换为MSTest?


编辑:我们已经尝试了建议的工具:

  • TestDriven.Net
    这将运行NUnit的测试Visual Studio中罚款,甚至与代码覆盖率的作品,但它也包含测试作为覆盖程序集的一部分。似乎没有排除测试的方法,但包括正在测试的程序集(我们的测试与他们测试的代码不同)。我们也不想花2000英镑的额外费用,因此我们需要为整个团队获得TestDriven.net。

  • 加利奥
    这没有奏效。为了获得覆盖输出,测试需要在Visual Studio测试运行器中运行。 Gallio不支持NUnit。

有没有进一步的想法?我们确实发现了一些开源尝试来获得这种类型的东西,但它们很陈旧,并且很长时间没有被触及(因此不支持VS2010)。

+2

另一个想法:向Microsoft发送一封邮件以使其工具更具可扩展性(例如,运行任何程序以在Ncover中进行codecoverage分析) – schoetbi 2011-01-18 12:42:53

回答

6

gallio自动化框架是一个开放源代码项目,它应该允许你完成这个任务。该站点位于http://www.gallio.org/上一版本中有最初的VS2010支持,在夜间版本中有更多的工作。

有在此位置的详细信息:http://weblogs.asp.net/astopford/archive/2010/04/13/gallio-and-vs2010.aspx

但是,如果你的钱用在这看看http://TestDriven.Net

+2

对于TDD.Net为+1。如果您使用nCover的Community Edition进行覆盖,并且已将项目升级到.net4,则可能需要购买完整版本,因为我在试用Community Edition时不支持.net4程序集。虽然值得投资。 – Pondidum 2010-05-26 15:21:47

+1

TDD.net也有一个完全免费的非商业用途的个人版。 – 2010-09-08 12:56:45

1

阿德里安,

看一看TestMatrix - 它会运行你的单元测试,代码覆盖率和单元测试性能分析 - 并且所有这些都本地集成到Visual Studio中。

+0

这看起来不错,但与我们已经支付(很多!)的VS2010溢价已经提供给我们的“免费”工具相比,它仍然相当昂贵。 – adrianbanks 2010-05-28 08:56:41

+1

有效的点,阿德里安!如果你付费的VS2010工具是做你想做的......再一次,相比于你为VS2010版本付费的代码覆盖率,TestMatrix是免费的,你不同意吗? – sergeb 2010-05-29 05:39:45

6

Jetbrains似乎正在用一种名为“dotCover”的新产品来解决这个问题。它仍然处于起步阶段,但考虑到他们的良好记录,它应该很快成为主力球员。

直到它释放,你可以“测试”位于here的夜间构建。

+1

作为更新版本,[dotCover公开发布](http://www.jetbrains.com/dotcover/),目前版本为1.1 – gorohoroh 2011-07-12 18:16:54

1

我在CodePlex上发现了Code Coverage Runner项目,它通过一个适配器桥接VS测试和NUnit API。截至撰写本文时,该项目自2008年3月以来尚未更新,但可能适合您的需求。

2

你可以得到VS 2010的代码覆盖功能,在运行NUnit的测试,但它的配置工作地狱工作:

设置在运行NUnit控制台-x86.exe程序这样一个通用的测试:

Does VS2010 Code Coverage support nUnit? (为简化的xUnit说明)

http://msdn.microsoft.com/en-us/library/ms182624(v=vs.100).aspx (一般说明)

确保:

  • 您已激活“仪器就位”。信任VS的部署将不起作用
  • 您运行nunit-console-x86.exe。 64位版本不起作用。
  • 所有需要代码覆盖结果的库都被构建到一个文件夹中。复制它们(例如通过构建事件)将不起作用。 (对于高级版:您可以在不同于其构建输出文件夹的位置使用这些库),但这非常棘手。)
  • 包含所有库的文件夹是通用测试的工作目录,并且从中启动NUnit。
  • 您将参数提供给NUnit作为工作文件夹的相对路径。
  • 您还提供NUnit的使用命令行选项/ noshadow

当您复制从不同的文件夹您的dll成测试一个文件夹中,奇怪的事情可能会发生。我举个例子,得到的结果是几乎所有的代码单元测试被掩盖时运行单元测试。 真遗憾,那代码覆盖的确不是不是找到库,经过单元测试!

那么,在建立所有构建输出目录后,我遇到了最奇怪的问题:从该文件夹NUnit不运行。我有它从2个不同的位置运行,但它在这里“找不到nunit-console-runner.dll”。

我唯一正确的通过在其他位置插装测试库得到它:

  • 测试>编辑设置>本地
  • 数据和诊断>代码覆盖
  • 停用原来的位置,并添加来自测试文件夹的文件夹

今天它立即工作,但有一天我试图让地点正确大约一个小时。我仍然不知道那天我搞砸了什么。

相关问题