使 NUnit 测试与 Visual Studio 常规构建集成的最低要求是什么?

发布于 2024-07-17 05:15:37 字数 364 浏览 5 评论 0原文

我知道有很多关于此问题的问题以及一篇又一篇的博客文章,但是有人可以给出最简单的答案(或者链接到现有问题,如果有合适的答案),以便在 Visual Studio 2005 上进行以下操作:

  1. NUnit 测试在 Visual Studio 上执行 常规构建(例如,对现有 *.proj 文件进行绝对最小的更改以使 NUnit 包含在 MSBuild 编译中)。 如果事情不会过于复杂,是否有一种好方法可以将 MSBuild 社区任务项目用作二进制文件,而不是安装在每台开发计算机上?

  2. 测试失败显示在错误列表/警告中。

  3. 测试失败停止发布编译。

谢谢你的帮助!

I'm aware there are dozens of questions about this and blog after blog post but can someone put the simplest answer (or link to the existing question if there is an appropriate answer) to get the following working on Visual Studio 2005:

  1. NUnit tests execute on Visual Studio
    regular build (e.g. the absolute minimum changes to existing *.proj file to get NUnit included in MSBuild compile). If it doesn't overcomplicate things, is there a good way to use the MSBuild Community Tasks Project as a binary rather than installed on each dev machine?

  2. Test failures show in error list/warnings.

  3. Test failures halt release compilation.

Thanks for any help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谁的年少不轻狂 2024-07-24 05:15:37

为了正确地做到这一点,您可能需要某种持续集成服务器,例如 TeamCity 或 Cruise Control 。

然后,您可以使用以下命令将 nUnit 测试添加到 MsBuild 脚本中。

<!--BEGIN RUNNING UNIT TESTS-->
  <Choose>
    <When Condition=" '$(Configuration)' == 'Release' ">
      <ItemGroup>
        <TestAssemblies Include="$(BuildDir)\Builds\Release\BusinessLayer.Tests.dll" />
        <TestAssemblies Include="$(BuildDir)\Builds\Release\ResourceAccessLayer.Tests.dll" />
      </ItemGroup>
    </When>
    <Otherwise>
      <ItemGroup>
        <TestAssemblies Include="$(BuildDir)\Builds\Debug\BusinessLayer.Tests.dll" />
        <TestAssemblies Include="$(BuildDir)\Builds\Debug\ResourceAccessLayer.Tests.dll" />
      </ItemGroup>
    </Otherwise>
  </Choose>
  <UsingTask TaskName="NUnit" AssemblyFile="$(teamcity_dotnet_nunitlauncher_msbuild_task)" />
  <Target Name="Test" DependsOnTargets="Build">
    <NUnit NUnitVersion="NUnit-2.4.6" Assemblies="@(TestAssemblies)" />
  </Target>
<!--RUNNING UNIT TESTS-->

您可以将条件添加到目标,即如果配置为 Release 并且任务失败,则构建失败。

我认为这应该涵盖第 1 点和第 3 点

编辑:另一种方法是使用 Visual Studio 中的预/后构建步骤运行 nUnit 测试,可能会有所帮助。

希望这可以帮助

To do this properly you probably want some kind of Continuous Integration Server like TeamCity or Cruise Control .

You can then add nUnit tests to your MsBuild script using the following

<!--BEGIN RUNNING UNIT TESTS-->
  <Choose>
    <When Condition=" '$(Configuration)' == 'Release' ">
      <ItemGroup>
        <TestAssemblies Include="$(BuildDir)\Builds\Release\BusinessLayer.Tests.dll" />
        <TestAssemblies Include="$(BuildDir)\Builds\Release\ResourceAccessLayer.Tests.dll" />
      </ItemGroup>
    </When>
    <Otherwise>
      <ItemGroup>
        <TestAssemblies Include="$(BuildDir)\Builds\Debug\BusinessLayer.Tests.dll" />
        <TestAssemblies Include="$(BuildDir)\Builds\Debug\ResourceAccessLayer.Tests.dll" />
      </ItemGroup>
    </Otherwise>
  </Choose>
  <UsingTask TaskName="NUnit" AssemblyFile="$(teamcity_dotnet_nunitlauncher_msbuild_task)" />
  <Target Name="Test" DependsOnTargets="Build">
    <NUnit NUnitVersion="NUnit-2.4.6" Assemblies="@(TestAssemblies)" />
  </Target>
<!--RUNNING UNIT TESTS-->

You can add the condition to the target that if the configuration is Release and the task fails then then the build fails.

I think this should cover points 1 and 3

EDIT: The other way to do it would be to run the nUnit tests using the pre/post build step in Visual Studio, this and this may help.

Hope this helps

゛时过境迁 2024-07-24 05:15:37

您可以在 TeamCity 中轻松完成此任务。 您甚至不需要使用 MSBuild; TeamCity 可以从解决方案文件构建,并且可以配置为运行 NUnit 测试。 它执行第 2 点中列出的所有功能,并创建趋势图和报告。

You can easily accomplish this in TeamCity. You don't even need to use MSBuild; TeamCity can build from the solution file and can be configured to run NUnit tests. It performs all the functions you list in point 2 and creates trend charts and reports as well.

错々过的事 2024-07-24 05:15:37

您可能会发现此列表很有用:http://groups.google.com/group/nunit-discuss

you may find this list useful: http://groups.google.com/group/nunit-discuss

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文