如何在C#/ ASP.NET网站上使用NUnit GUI?

时间:2010-05-21 18:31:02

标签: c# nunit

我有一个C#/ ASP.NET网站,在App_Code目录中有一些代码(* .cs)文件。我想用NUnit测试它们。我已经用适当的[TestFixture]和[Test]注释编写了一个测试文件,并把它放在这里:App_Code / Test / TestClassName.cs。

我加载NUnit GUI来运行它,但它要我选择.exe或.dll文件。我的项目的bin文件夹中没有。我的项目成功运行并构建了所有内容,但仍然没有exe或dll文件。如何让NUnit Gui在该课程中运行测试?

3 个答案:

答案 0 :(得分:3)

我不建议将测试代码放在您要部署到生产环境的同一个软件包中。

您可能希望将测试类移动到库项目,例如Business.UnitTest(可能有一种内置方式来创建一个特定于nUnit的项目,如果有的话,使用它)。然后将App_Code目录中的业务类移动到另一个名为Business的项目中。让Business.UnitTest引用业务库。这应该让nUnit运行(我不相信nUnit针对网站运行,只有库,但我不是100%肯定)。

为您的网站添加对刚刚创建的业务库的引用,以便您的生产代码可以访问业务库中的业务对象。您可能必须解决一些命名空间问题,但这不应该太糟糕。

答案 1 :(得分:2)

.NET网站项目的诀窍在于,代码文件通常不在前面编译,而是在执行相应页面时编译。这对测试提出了挑战,因为正如您所提到的,NUnit希望运行.exe.dll进行测试。

解决此问题的一种方法是将网站项目转换为 Web应用程序;它们听起来很相似,但以不同的方式工作。与不需要预先编译的网站相比,Web应用程序需要它。因此,您将拥有一个或多个可编译为程序集(.dll)或可执行文件(.exe)的项目。然后NUnit可以挂钩进行测试。

为了使这项工作,您可能希望将可测试代码分成另一个项目;您的前端Web应用程序可以参考此其他项目来使用其中的代码。理想情况下,前端将是一层薄薄的逻辑和用户交互,真正的工作可以发送到第二个项目。因此,第二个项目是您想要测试的。

您还需要一个项目来包含测试 - 一般的智慧是不要在与测试代码相同的项目中进行测试。该项目涉及正在测试的项目和NUnit,并包含测试本身。这个程序集是指导NUnit运行以进行测试的程序。

答案 2 :(得分:0)

  1. 首先,您要为测试创建一个新项目。如果您碰巧有任何内部类或属性,则应使用InternalsVisibleToAttribute以便能够在“真实”项目之外的测试项目中测试这些内容。 此属性适用于整个程序集,因此我建议将其放入“真实”程序集的Assembly.info文件中。

  2. 在测试项目中,添加对“真实”程序集的引用。

  3. 确保准确知道二进制文件的路径(assembly.dll);

  4. 从您的NUnit GUI中打开TestsProjectAssembly.dll,确保您正在浏览到正确的文件夹;

  5. 您可能还希望NUnit GUI在每次测试运行时重新加载程序集(在选项属性中有一个选项);

  6. 运行测试。

  7. 绝对确保您的路径或可浏览文件夹是生成测试项目的文件夹。