2010-10-20 64 views
14

我开始使用NUnit在C#中用Visual Studio 2010编写测试用例。我想用NUnit来测试.dll(一个C#类库项目)的公共函数。我如何设置NUnit来处理我的项目?如何设置NUnit来运行我的项目的单元测试?

  1. 我应该添加NUnit的代码相同的类库项目来测试对,或者我应该在NUnit的测试用例相同的解决方案添加一个单独的项目?最佳做法是什么?

  2. 如果我需要为NUnit测试用例创建一个单独的项目,我应该将它作为类库项目还是可执行文件?如果我把它变成一个类库项目,我该如何运行它?

  3. 如果我需要测试一个可执行文件和而不是一个类库项目,是否对流程和/或项目有任何更改?

+0

如果您已经安装了ReSharper,你可以右击你的测试项目来运行所有的单元测试你拥有了一切设置完毕后。 – reggaeguitar 2014-01-22 16:02:32

回答

15

Re 2

通常,将[test case dll]与[business logic dll]分开。您的业​​务逻辑DLL不应该包含NUnit的任何知识,以分离问题并简化部署/维护。

您的测试用例的dll应该包含对NUnit的引用,以及您的业务逻辑dll。

您不需要共享名称空间。您可以通过修改业务逻辑DLL的AssemblyInfo.cs文件将内部业务逻辑DLL的成员公开给测试用例DLL,以将内部公开给测试用例DLL。这可以让您在业务逻辑DLL中保留所需的可见性。

回复3

你的测试用例应该在一个dll(即类库项目)。您可以直接将其加载到NUnit的用户界面中,或者在集成环境中使用NUnit的控制台运行器来自动运行测试。

我是怎么做的:

  • 开放测试用例类库项目 性能,调试选项卡
  • 用外部程序打开:给你的nunit.exe
  • 设置命令行 点参数 您的测试用例dll的确切名称: MyTests.dll
  • 工作目录:只需点击 省略号按钮,它将为 预选测试DLL输出 目录当前构建 配置
  • 设置的测试项目是在 解决方案 默认启动的项目;这样一来,只要你打 F5(或“播放”按钮),NUnit的将 主动走上前与更新后的测试 预装 - 非常方便和快捷 。

最好的运气 - 也尝试测试项目类型AVL。在Visual Studio中,它与NUnit非常相似。我仍然喜欢NUnit,但在学习时尝试一些不同的选项是很好的。

+0

谢谢,问题回答! – George2 2010-10-21 02:53:24

+0

很好的答案,谢谢! – BClaydon 2013-06-15 19:48:12

8
  1. 单元测试应该在一个单独的测试项目相同的解决方案下。
  2. 是的,让它成为一个类库项目。如果你想在NUnit运行测试,this tutorial can show you how

关于您的评论:当您将NUnit.exe设置为测试类库(包含您的单元测试的默认启动可执行文件)时,您告诉NUnit您要测试哪个DLL;在第一次之后,它会记住你正在进行测试的项目。

您还希望确保在单元测试库中引用了其他项目的引用。

再一次,我列出的教程经历了所有这些。

+0

谢谢!如果使用另一个测试项目来对照类库进行测试,那么测试项目是如何知道它是针对类库进行测试的呢?我需要做的类库项目从测试项目参考为了确保哪些项目测试项目测试反对? – George2 2010-10-20 16:06:33

+1

这和3号,没有什么变化 - 你的可执行文件可以在完全相同的方式为您的图书馆进行测试。是的,你的测试项目需要引用它正在测试的项目。 – Lunivore 2010-10-20 16:08:01

2

2:您应该将所有的NUnit测试放在同一个解决方案中的单独项目中。构建项目会构建测试,反之亦然,因此,当您正在TDDing此项目时(您正在这样做,对吧?),您可以简单地运行测试,并将构建必要的一切。 3:类库。如果您使用的是NUnit,它不需要由Windows运行;你只需要使用测试跑步者。

+0

谢谢!如果使用另一个测试项目来对照类库进行测试,那么测试项目是如何知道它是针对类库进行测试的呢?我需要做的类库项目从测试项目参考为了确保哪些项目测试项目测试反对? – George2 2010-10-20 16:07:31

+1

您需要使用using语句在代码中引用被测对象的名称空间,但只要被测试的项目和具有该测试的项目处于相同的解决方案中,您就应该能够看到其他类而不必添加实际参考;编译器将为您创建内部解决方案引用。 – KeithS 2010-10-20 16:18:23

2

我会为测试代码添加一个单独的测试项目,并引用NUnit和来自该测试的库。它应该是一个类库,并且它由NUnit测试运行器运行,例如nunit-console test_assembly.dll - 请参阅documentation

+0

谢谢!如果使用另一个测试项目来对照类库进行测试,那么测试项目是如何知道它是针对类库进行测试的呢?我是否需要将测试项目引用到类库项目中以确保测试项目正在测试什么项目? – George2 2010-10-20 16:08:19

相关问题