重复某些代码时,此单元测试是否更具可读性?

时间:2014-07-18 09:42:30

标签: unit-testing tdd

我们的团队讨论了两个可能的单元测试版本。

版本1:

var dependencyMock = new Mock<IDependency>();
dependencyMock.Setup(m => m.DoSomething()).Returns("some string");
var classUnderTest = new ClassUnderTest(dependency.Object);

var result = classUnderTest.DoSomethingElse();

Assert.AreEqual("some string", result);

第2版:

string expectedResult = "some string";
var dependencyMock = new Mock<IDependency>();
dependencyMock.Setup(m => m.DoSomething()).Returns(expectedResult);
var classUnderTest = new ClassUnderTest(dependency.Object);

var result = classUnderTest.DoSomethingElse();

Assert.AreEqual(expectedResult, result);

讨论是关于“某些字符串”是否应该重复(版本1)或者是否应该放入变量(版本2)。我们都同意在单元测试中使用某些代码重复,如果它使测试更具可读性。对我来说,版本1更具可读性(对于我的同事,版本2更具可读性)。对我来说,似乎在可读性方面,两者都没有更好。

其中一个版本还有其他参数吗? (我不确定,如果这个问题在这里被提出是有效的,因为它可能导致讨论而且可能没有“答案”......)

1 个答案:

答案 0 :(得分:1)

代码复制在单元测试中通常很好,因为它可以让您一眼就能看到正在做什么,但在这种情况下,您的复制实际上是一个负面的事情。

最重要的论点是版本2确保您不会意外地拥有不同的字符串。当你遇到不同的,更复杂的物体时,这是一个很好的习惯。