在Abstract类中定义的TestMethod不在Test Explorer中

时间:2014-09-26 16:01:25

标签: c# unit-testing

我正在重写一个包含大量单元测试的解决方案,其中很多都在不同的实体上做同样的事情。

我试图重构测试以定义默认实现,但我遇到了问题。

我没有看到测试在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


}

1 个答案:

答案 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()
    {

    }
}