【发布时间】:2014-02-11 15:59:49
【问题描述】:
我正在测试各种服务器,它们具有相同的模型,已经通过单元测试。 现在我想测试真实的服务器(不仅是通用模型)。
在测试通用模型时,我使用假适配器创建了假通用服务器,它在基本测试类中定义,所有测试类都继承自它。这进行了一百多个测试。
现在我需要使用相同的测试类,但需要使用不同的基类(用于各种真实服务器)。他们使用相同的测试数据并具有相同的结果。它们在某些内部方法上有所不同。
是否有可能调用所有测试的次数与服务器数量一样多,每次使用不同的基础测试类(服务器类型和构造函数)?
示例:
[TestClass]
public class GeneralServerTests : BaseServer
{
[TestMethod]
public void IsAlive_ChecksInteraction_ReturnsTrue()
{
Assert.IsTrue(GeneralServer.Adapter.IsAlive());
}
...
}
基础测试类
[TestClass]
public abstract class BaseServer
{
protected Server GeneralServer;
[TestInitialize]
public void Setup()
{
//here I assign the Server constructor,
}
}
所以我需要用不同的服务器调用 GeneralServerTests 类。
希望你明白我的意思:)
有什么办法吗?
【问题讨论】:
-
我明白你的意思,但通常单元测试不应该以任何方式涉及服务器(当然,除了构建服务器)。您应该测试代码路径,而不是服务器。如果你不能,就需要重新设计一些东西。如果您的逻辑依赖于服务器,那么您可能需要进行一些重构以使您的服务器类更通用,只有连接字符串有所不同。某些东西难以测试或测试混乱的迹象并不意味着您测试得不够好,它意味着被测代码编写得不够好。这并不总是正确的,但这是一个公平的假设。
标签: c# unit-testing base-class test-class