我正在重写一个包含大量单元测试的解决方案,其中很多都在不同的实体上做同样的事情。
我试图重构测试以定义默认实现,但我遇到了问题。
我没有看到测试在Test Explorer中的BaseTestClass中声明TestMethod。 我错过了什么吗? 理想情况下,我会从基础和具体类中看到一套完整的方法,用于每个具体的实现。
以下是我所拥有的:
public Interface SomeTestInterface
{
... signatures of methods with are required...
public void TestConnection();
}
[TestClass]
public abstract class BaseTestClass : SomeTestInterface
{
.. a mix of default implementation and abstract methods
[TestMethod]
public void TestConnection() {
AssertIsTrue(operator.TestConnection());
}
[TestMethod]
public abstract void TestQuery();
}
[TestClass]
public class ConcreteClassA : BaseTestClass
{
... overriding of abstract methods
}
答案 0 :(得分:0)
除非使用TestMethod属性显式声明单元测试,否则单元测试不会运行。如果你想避免必须将属性添加到TestQuery的每个实现,可以这样做:
public interface SomeTestInterface
{
void TestConnection();
}
[TestClass]
public abstract class BaseTestClass : SomeTestInterface
{
[TestMethod]
public void TestConnection()
{
}
[TestMethod]
public void TestQueryBase()
{
TestQuery();
}
public abstract void TestQuery();
}
[TestClass]
public class ConcreteClassA : BaseTestClass
{
public override void TestQuery()
{
}
}