如何区分测试类中的单元测试和集成测试?

时间:2018-01-24 15:01:20

标签: c# nunit

我的问题与此类似:Junit: splitting integration test and Unit tests。但是,我的问题是关于NUnit而不是:JUnit。在测试类中区分单元测试和集成测试的最佳方法是什么?我希望能够做到这样的事情:

var success = await Launcher.LaunchUriAsync(new Uri("MyApplicationProtocolName:"));

有没有办法用NUnit做到这一点?有没有更好的方法来点这个?

4 个答案:

答案 0 :(得分:6)

就我个人而言,我发现将它们保存在单独的程序集中会更好。您可以使用约定,例如 name .Integration.Tests和 name .Tests(或您团队喜欢的任何内容)。

任何程序集或属性都适用于TeamCity等CI服务器。属性方法的痛苦倾向于出现在IDE测试运行器中。我希望能够快速运行我的单元测试。使用单独的程序集,很容易 - 选择适当的测试项目并运行测试。

答案 1 :(得分:1)

这个答案与其他一些答案有一些共同之处,但我想以稍微不同的方式提出这个问题。

TestFixtures的设计使每个测试都得到相同的设置。要正确使用TestFixtures,您应该以这样的方式划分测试,即所有具有相同设置的测试最终都在同一个测试类中。这就是几乎每个xunit框架都被设计使用的方式,当你使用软件时,你总能得到更好的结果。

由于Integration和Unit测试不太可能共享相同的设置,因此这自然会导致将它们放在一个单独的类中。通过这样做,您可以将所有集成测试分组到命名空间下,使其易于独立运行。

更好的是,正如另一个答案所暗示的那样,将它们放在一个单独的组件中。这对于大多数CI构建来说效果更好,因为集成测试的失败可能更容易与集成测试的失败区分开来。此外,使用单独的程序集可以消除使用类别或特殊属性的所有复杂性。

答案 2 :(得分:0)

“类别属性”可能会帮助您执行此操作。

https://github.com/nunit/docs/wiki/Category-Attribute

{{1}}

答案 3 :(得分:0)

不要将它们放在同一个类中,要么将它们拆分到测试程序集中的文件夹中,要么将它们拆分为两个单独的测试程序集。

从长远来看,这将更容易管理,特别是如果您使用像NCrunch这样的工具。