2

目前我正在尝试在 Jenkins 上设置自动测试。我有一个包含 4 个不同项目的 Visual Studio 解决方案,其中一个是我的 NUnit 测试项目,另外 3 个项目有几个测试。

1 我在 Visual Studio 中的 Nunit 测试项目中添加了一个 PostBuild-Event,其内容如下:

`$(SolutionDir)Libs\NUnit-2.6.0.12051\bin\nunit-console.exe $(TargetPath)`

它工作正常,但这是典型的方式吗?测试项目是我构建顺序中的最后一个项目,我认为将 PostBuild 事件添加到其他 3 个项目没有意义吗?


2 正如您在上面给出的路径中看到的,我的 Visual Studio 项目文件夹有一个名为“Libs”的文件夹。这是我放置依赖项的地方,也是 NUnit。但是 NUnit 文件夹大约有 8MB。你能告诉我我可以删除哪些文件吗?因为否则在每次提交源代码控制时,用户只需要为 NUnit 传输 8MB,我认为这有点多。

我绝对需要 nunit.framework.dll 来构建测试。我还需要 console-runner.exe 来运行测试。但我还需要什么?不幸的是,console-runnter.exe 依赖于其他一些文件,没有它们就会崩溃。

谢谢

4

3 回答 3

3

我一直在使用稍微不同的方法将 NUnit 与 Jenkins 下的 Visual Studio(C#、MSBuild)集成。VS 解决方案在其下包含几个项目,这些项目构建了大约 10 个 DLL 和 1 个应用程序。Visual Studio 解决方案不调用 NUnit。

与“应用程序”代码并排的是一个包含测试代码的目录。有一个独立构建的测试解决方案。它引用了应用程序解决方案的输出。

Visual Studio 和 NUnit 都作为应用程序安装在运行 Jenkins 的构建机器上。

我们的基本目录布局

  • 成分
    • bin(已创建)
    • 各种源目录
    • 组件.sln
  • 测试
    • bin(已创建)
    • 各种 NUnit 测试用例源
    • 测试.sln

Jenkins 的基本构建步骤

  1. 使用 MSBuild 步骤,MSBuild Components/Components.sln
  2. 使用 MSBuild 步骤,MSBuild Test/Test.sln
  3. 使用 Windows 批处理文件步骤,在 Tests/Tests.sln 上调用 NUnit:

    nunit-console.exe Tests\Tests.sln /xml=nunit-test-results.xml /labels

  4. 使用 xUnit Jenkins 插件设置构建后操作以处理nunit-test-results.xml和显示结果。

于 2012-04-24T10:22:34.030 回答
0

To answer your 2 questions:

  1. I use a post build event on my Test project to run the NUnit console in the same way as you've described. Works well in our environment.

  2. As you've said you need to include nunit.framework.dll to build your tests. To run them, the NUnit console will run quite happily with just the following files:

    bin\nunit-console.exe
    bin\nunit-console.exe.config
    bin\lib\nunit.core.dll
    bin\lib\nunit.core.interfaces.dll
    bin\lib\nunit.util.dll
    bin\lib\nunit-console-runner.dll
    

    This amounts to about 500KB of files for NUnit 2.6.

于 2013-01-21T15:13:24.620 回答
0

我建议编写一个脚本文件,而不是在 Jenkins 中定义多个步骤。我们使用 powershell 来调用 msbuild 和 nunit-console。这样,我们的开发人员可以在提交之前简单地调用这个 powershell 脚本。如果构建/测试/捆绑/部署步骤是独立的,那么设置 Jenkins(或任何其他构建服务器)也容易得多。

于 2014-02-02T05:07:27.933 回答