【问题标题】:How can I split same-project unit tests into separate assemblies?如何将相同项目的单元测试拆分为单独的程序集?
【发布时间】:2015-02-07 02:28:21
【问题描述】:

我有几个测试项目,其中一个有许多单元测试,都与进行某些计算非常相关。运行 all 单元测试需要很长时间。因此,我正在寻找一种将测试轻松拆分为nightly 单元测试和所有其他 单元测试的方法。如何方便地指定哪些测试装置和测试方法应该nightly?换句话说,有没有办法将同一项目中的测试拆分为单独的程序集

到目前为止我的想法和尝试:

  • 只需手动将夜间测试分离到他们自己的项目中,并且只在夜间运行该新项目。 这意味着每当我想让测试夹具每晚或定期运行时,我都会在项目中移动文件,也就是说,这是不可取的。
  • 想出一个构建脚本,在编译时将这些测试分离到单独的项目中。然后我会得到单独的程序集。这似乎太复杂了,但也许这是唯一的选择。

我希望能够使用类属性来指定哪些测试将在夜间运行,例如:

[TestClass, Nightly]
public class MyTestClass { }

有什么想法吗?

【问题讨论】:

    标签: c# visual-studio resharper teamcity


    【解决方案1】:

    您可以根据需要为同一解决方案创建多个单元测试项目。

    如果您想使用单独的项目(即您的构建系统仅设置为从单独的项目运行测试),我会从旧项目中获得新项目 共享 测试 - 创建新项目并添加文件从旧的“链接”开始(添加文件对话框的“打开”按钮上有一个小选项可以这样做)。

    或者,您可以向测试添加属性(即TestCategoryAttribute)并让您的测试运行者尊重这些属性。

    【讨论】:

    • TestCategoryAttribute 看起来很有希望。这是在测试类级别上应用它的任何方式,以便该类的所有测试方法都应用类别吗?
    • @William - 不,它被标记为“target=method”(参见 MSDN 链接)。我不知道 teamcity runner 允许什么,但也许您可以创建自定义属性并对其进行过滤,或者仅通过测试名称/类名进行过滤。
    猜你喜欢
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多