繁体   English   中英

在Visual Studio中的子类中继承和运行单元测试

[英]Inheriting and running Unit Tests in sub classes in Visual studio

我有一个带有单元测试的基类,我有两个子类,用构建类时需要知道的不同数据进行初始化。

设置的示例代码如下:

[TestClass]
public class BaseClass
{
  public BaseClass(object param){ }

  [TestMethod]
  public BaseTest() { /* Do Stuff */ }
}

[TestClass]
public class SubClass1 : BaseClass 
{
  public SubClass1() : base("data1") {}
}

[TestClass]
public class SubClass2 : BaseClass 
{
  public SubClass2() : base("data2") {}
}

理想情况下,我希望显示两个单元测试,SubClass1.BaseTest()和SubClass2.BaseTest()能够运行。 但是,我只看到BaseClass.BaseTest。 如果我将BaseClass抽象化,则测试资源管理器根本不会显示任何测试。

基础测试根据在构造类时传递的数据执行不同的操作,但是它们具有相同的代码。 我可以避免复制测试吗? 我可以避免为重定向到基类的子类中的每个测试编写一个方法吗?

AFAIK,这是Visual Studio Test(以前称为MSTest )不支持的场景。

无论如何,提供基本测试用例听起来更像是测试设计缺陷而不是实际优势。

测试类应提供具体的测试方法,以检查某些测试类是否以正确的方式完成工作。

您应该使用测试基类来共享常见的测试助手方法,属性,如果您想在许多测试用例中共享一些步骤,则应在静态类TestAbbreviations实现它们。

测试应该尽可能简单,你应该避免过度工程。 如果使用KISS原则实现测试套件,它也将作为如何使用代码的文档。

虽然Matias的答案总体上看起来不错,但我目前的状态不能使用这种方法。 我找到了解决方案,但为什么基本测试没有出现在Text Explorer中。 对于要在Test Explorer中的子类中显示的Base测试,base和sub class需要位于同一个项目中。 我让它们分开了,这使它无法运作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM