我的项目中有几个程序集,每个程序集都有一个覆盖它的测试程序集(这不能改变,所以不建议)
我有一套通用的测试,我希望将它们包含在每个测试程序集的测试套件中。
我已将这些常见测试放在他们自己的程序集中,并从每个具体的测试程序集中引用它,但是NUnit / ReSharper测试运行程序不会选择测试。
如何让NUnit和ReSharper测试运行器为每个测试程序集包含/找到这些常用测试并执行它们?
更新:目前,我的常见和每个项目测试都是使用[TestFixture]
和[Test]
属性定义的
实施例
来自普通程序集的示例测试
namespace Example.Common {
[Test]
public void CommonTest() {
// something that applys to all assemblies, like code analysis, obviously this is a silly example, but the contents of the test is not important. I just want this included with the other tests in the specific assemblies
Assert.AreEqual(10, Assembly.GetExecutingAssembly().DefinedTypes.Count());
}
}
来自项目特定程序集的示例测试:
namespace Example.Specific {
[Test]
public void SpecificTest() {
// something specific to this assembly
Assert.AreEqual("Example.Specific", Assembly.GetExecutingAssembly().GetName().Name);
}
}
我希望将常用测试包含在
中答案 0 :(得分:2)
您需要拥有CommonTest
类的派生类。仅引用通用测试组件是不够的。今年早些时候我遇到了同样的问题;我想执行几个测试,但配置不同(app.config)。最后这是同样的问题,但不幸的是,没有像[assembly: IncludeTest( typeof(CommonTest))]
这样的简单方法..那将是非常棒的:)
答案 1 :(得分:0)
我不确定我是否理解正确,但这就是我要做的事情:
namespace NUnitCommon
{
[TestFixture]
public class NUnitCommonTestClass
{
[Test]
public void CommonTestNoOne()
{
Assert.IsTrue(true);
}
}
}
using NUnitCommon;
namespace NUnitSpecific
{
[TestFixture]
public class SpecificTestClass : NUnitCommonTestClass
{
[Test]
public void SpecificTestNoOne()
{
Assert.IsTrue(true);
}
}
}
如果您要为SpecificTestClass
运行所有测试,那么也会运行来自NUnitCommonTestClass
的测试。使用ReSharper测试。那是你要的吗?如果没有,请澄清。