2015-02-06 50 views
0

我有几个测试项目,其中一个有很多单元测试,都与做某些计算非常相关。运行全部单元测试需要很长时间。所以,我正在寻找一种方法来轻松地将测试分为每晚单元测试和所有其他单元测试。我怎样才能方便地指定哪些测试夹具和测试方法应该是每晚?换句话说,有没有办法将同一个项目中的测试拆分成单独的程序集如何将相同项目单元测试分解为单独的程序集?

我已经想到的和到目前为止已经试过:

  • 就在夜间测试手动,只有放在各自的项目中运行每晚的基础上新项目。 这意味着我想在夜间或定期运行测试夹具时随时在项目中移动文件,即不合需要。
  • 想出一个构建脚本,它可以在编译时将这些测试分离为单独的项目。然后我会得到单独的程序集。这看起来太复杂了,但也许它是唯一的选择。

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

[TestClass, Nightly] 
public class MyTestClass { } 

任何想法?

回答

1

您可以根据需要为同一解决方案提供尽可能多的单元测试项目。

如果你想要去单独的项目(即构建系统只安装运行从单独的项目测试)我有新的项目从旧共享测试 - 创造新的项目,并从旧如添加文件“链接”(添加文件对话框的“打开”按钮上有小选项)。

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

+0

'TestCategoryAttribute'看起来很有前途。这是否有办法在测试类级别上应用它,以便该类的所有测试方法都可以应用该类别? – William 2015-02-06 18:37:54

+1

@William - 不,它被标记为“target = method”(请参阅​​MSDN链接)。我不知道teamcity runner允许什么,但也许可以创建自定义属性并对其进行过滤,或者仅通过测试名称/类名称进行过滤。 – 2015-02-06 18:52:37

相关问题