代码之家  ›  专栏  ›  技术社区  ›  anonym0use

将单元测试写入程序集还是单独的程序集?

  •  18
  • anonym0use  · 技术社区  · 17 年前

    编写单元测试时,您是将测试放在希望测试的程序集中,还是放在单独的测试程序集中?我已经在一个单独的程序集中编写了一个应用程序,在类中进行测试,以便于进行deloyment,因为我可以排除该程序集。是否有人在您希望测试的程序集中编写这些测试?如果有,其理由是什么?

    5 回复  |  直到 17 年前
        1
  •  11
  •   Will Dean    17 年前

    这在网上引起了广泛的争论。

    我们使用单独的程序集和InternalsVisibleTo属性来帮助测试程序集查看测试程序集的所有内部。我们倾向于为正在测试的每个组件制作一个测试组件。

        2
  •  11
  •   Andrew Bullock    17 年前

    我有一个单一的解决方案,包括一个接口项目、一个测试项目、一个域项目和一个数据项目。当我发布时,我只是发布接口,它不引用测试,所以它不会被编译。

    编辑:底线是你不希望它成为你最终发行版的一部分。通过使用单独的项目/程序集,可以在VS中自动实现这一点。但是,您可以将它放在同一个程序集中,但如果您使用的是nant或msbuild,就不能编译该代码。虽然有点乱,但要保持整洁,使用单独的组件:)

        3
  •  10
  •   Rob Wells    17 年前

    将测试代码保留在部署中:

    • -所有额外的代码标记都不会在现场使用。
    • 影响释放 -您是否发布了完整应用程序的新版本。当您改进的只是测试代码时,例如,由于错误修复而扩展了测试套件。
    • 您不能在另一个项目上轻松地重用测试框架 -如果您总是发布被测试代码阻塞的应用程序,任何后续项目都必须重用相同的测试代码。否则,您将遇到这样的情况,即应用程序A正在使用测试平台的v1.2来实现应用程序的这些方面。这在所有应用程序中都是常见的,例如表示层或业务逻辑框架等。B正在使用测试框架app的v1.1。C正在使用v1.2.1等。

    另一方面,解耦允许您:

    • 跨多个项目轻松重用测试套件。

        4
  •  5
  •   Stephan Leclercq    17 年前

    在不同的程序集中。否则,您的程序集将引用测试框架(例如Nunit.framework.dll),您需要在客户机器上安装它,

    即使您提供的是一个库,并且您希望您的客户将单元测试视为一个示例或关于如何使用您提供的对象的说明,但将其包括在生产部件中也没有什么好处。

        5
  •  0
  •   dviljoen    17 年前