哪个更好?每个解决方案或每个项目的单元测试项目?

时间:2011-03-04 17:32:44

标签: unit-testing nunit xunit.net

每个解决方案或每个项目的单元测试项目都有更好的单元测试项目吗?

根据每个解决方案,如果解决方案中有5个项目,最终会得到1个单元测试项目,其中包含5个项目中每个项目的测试。

对于每个项目,如果您在解决方案中有5个项目,则最终会有5个单元测试项目。

什么是正确的方式?

我认为这与Write Unit tests into an assembly or in a separate assembly?

的问题不同

5 个答案:

答案 0 :(得分:24)

程序集是一个打包/部署问题,因此我们通常将它们分开,因为我们不希望将它们与我们的产品一起部署。无论你是按照每个库还是每个解决方案将它们分开,都有两个优点。

最终,您希望所有开发人员都可以立即使用测试,以便开发人员知道在需要时可以在哪里找到它们。您还需要一个无障碍的环境,只需要很少的开销来编写新的测试,这样您就不会武装那些不想编写测试的愤世嫉俗者。测试还必须快速编译和执行 - 项目结构可以在所有这些中发挥作用。

您可能还需要考虑可以进行不同级别的测试,例如单元测试,集成测试或UI自动化。通过使用测试类别,可以在某些工具中隔离这些类型的测试,但有时如果它们是单独的库,则更容易执行或报告。

如果您有特殊的包装注意事项,例如模块应用程序,模块之间不应该彼此了解,那么您的测试项目也应该反映这一点。

在没有很多项目的小型项目中,1:1的比例通常是首选方法。但是,随着项目数量的增加,Visual Studio性能会迅速下降。大约40个项目标记编译成为编译和运行测试的障碍,因此更大的项目可能会从整合测试项目中受益。

我倾向于采用务实的方法,因此复杂性适合于问题。通常,应用程序将由若干层组成,其中每个层可具有多个项目。我喜欢从每层一个测试库开始,我使用文件夹模拟解决方案结构。在复杂性需要时划分它。如果您设计测试项目的灵活性,那么转换通常是无痛的。

答案 1 :(得分:9)

我会说每个单元测试项目的单独项目,而不是每个解决方案的一个项目。我认为这样做更好,因为如果您决定从解决方案中取出特定项目并将其转移到另一个解决方案中,它将为您节省大量麻烦。

答案 2 :(得分:2)

我们在一个非常大的系统中从文件到解决方案的项目有一对一的比例,我们已达到每次登记时构建需要超过90分钟的程度。我创建了新的解决方案配置,它只构建测试项目,每天运行一次新的配置以确保所有测试用例都正常工作,开发人员可以切换到unittest配置以在他们的开发环境中测试他们的代码。 PL。让我知道你的反馈

答案 3 :(得分:1)

我个人每个项目都会编写一个测试程序集。然后,我为每个解决方案创建一个nunit项目,并从中引用所有相关的测试程序集。这反映了项目的组织,意味着如果项目在不同的解决方案中重复使用,那么只需要运行相关的单元测试。

答案 4 :(得分:1)

我将使用其中一个“依赖”答案。就个人而言,我倾向于将所有测试放在一个项目中,每个组件的项目中都有单独的文件夹(如果需要,还有更多的子文件夹。)这使得从VisualStudio或CruiseControl中运行整个集合变得很容易。达网络。

如果您有数千个测试,那么单个项目可能难以维护。此外,正如Peter Kelly在回答中提到的那样,如果移动项目,能够轻松拆分测试可能很有用。

相关问题