如何隔离这个?
假设有一个使用契约构建的模块(即实现接口)。这样做是为了单元测试目的和可扩展性。
假设我的团队中有一个人(A)擅长为数据访问模块编写单元测试用例。所以他的代码在加载适当的接口和程序集之后简单地实例化这个接口。那个人使用接口作为核心测试主题来编写测试用例。 (不确定这是否是正确的单词用法)。
另一个人(B),他是模块的实际开发人员,并且在编写代码方面有点新手(并且对.net框架没有太多了解)。甚至他也写了一些测试用例。他/她根据团队负责人提出的规范指南(如上所述)为模块编写代码。
所以A的测试用例更符合系统目标。但是B的测试用例更像是在探索.net框架。对于例如它可能类似于探索File.Replace。除非你很好地阅读有关它的文档,否则你可能会认为文件系统中“任意位置”的两个文件可以被“替换”。但是,文档说不然。但是,说,B,不知道它。他编写测试用例来了解这一点。
因此,总体而言,有两组单元测试用例。为了能够跟踪工作量和性能,并可能提出针对B的培训计划,我将需要两个测试用例。但是,在整体测试数据访问模块时,我只需要执行A的测试用例。
Visual Studio是否允许我这样做?选择性地运行测试用例。如何才能快速运行所有A的测试用例?
答案 0 :(得分:3)
这取决于您使用的是哪个测试库。如果您使用的是MsTest,则可以使用TestCategories。
[TestCategory("Nightly"), TestCategory("Weekly"), TestCategory("ShoppingCart"), TestMethod()]
public Void DebitTest()
{
}
同样,如果您使用的是NUnit,则可以使用Categories。
namespace NUnit.Tests
{
using System;
using NUnit.Framework;
[TestFixture]
[Category("LongRunning")]
public class LongRunningTests
{
// ...
}
}
更新
如果你真的必须在visual studio中运行它们,我会建议使用using playlists,但我会质疑它的好处。必须手动检查测试用例是否正在通过或覆盖范围不大,因为可能会出错。您应该在构建过程中自动执行此操作。我经常认为视觉工作室很难做到不推荐的东西(例如这个)。
我还建议你让A人和B人一起配对。当A人将知识传递给B人并且质量应该更高以便您能够更快地移动时,经验不足的人的技能将会更快地提高。
答案 1 :(得分:0)
我认为为此目的进行测试分离是一个坏主意。它可能会破坏较少的士气 有经验的开发此外,当多人修改同一测试时,它会产生一个问题。如果您真的担心这个问题,那么请确保由经验不足的开发人员编写的测试具有足够高的质量,以便被视为代码库的一部分。结对编程和代码审查非常适合这一点。这也为开发人员提供了很好的反馈,可以用来改善自己。
这通常是how high of quality your tests should be的问题。将代码库的一部分保留为低质量通常不是一个好主意。即使你试图清楚地标记它。