做TDD时要不要测试静态工厂?

Should static factories be tested when doing TDD?

我知道在 TDD 中,您应该避免编写未经事先测试的代码,但我想知道这是否是为了简单起见而可能违反规则的时候之一(避免测试包装器)对于出于测试目的的第三方库,例如网关模式)。不过,我目前正在测试它们,就像这样:

[TestMethod]
public void CreateShouldReturnANewInstance()
{
        var tcpClientMock = new Mock<ITcpClient>();
        var spooler2 = OutboundMessageSpooler.Create(tcpClientMock.Object);
        Assert.IsTrue(spooler2 != null && spooler2 is OutboundMessageSpooler);
}

我觉得你写的测试很好,但不是很重要。有一点功能可以从 TCP 客户端创建假脱机程序,并且此测试证明该功能单元有效。这是驱动那部分功能的好方法 - 以前它不起作用,你用红色测试演示,你写了方法,现在它起作用了。凉爽的。必要的?可能不会。有助于回归?再一次,可能不是。作为测试未来(也许更复杂)逻辑的模型有用吗?也许。

我不会建议您不要编写这样的测试 - 毕竟,它们很容易编写并且可以帮助您考虑如何实现该功能 - TDD 的真正意义 - 但我可能也不会敦促您编写它们。看看您觉得它有多大帮助,如果答案是 "not much," 将您的试驾资源花在其他地方。