【问题标题】:Is it ok to extract repeating assertions to a private method [closed]是否可以将重复断言提取到私有方法[关闭]
【发布时间】:2015-03-01 19:27:47
【问题描述】:

我一直在为一个类编写测试,所有这些看起来都像这样:

expectedResult = ....;
exception = new ....;
mock.Setup(sameexpression).Throws(exception);
result = sameObject.SameMethodToTest();
Assert.AreEqual(expectedResult, result);

我想知道将这段代码(包括公共断言)提取到一个共享私有方法中是否会被认为是一种不好的风格,该方法将接收 expectedResult 和异常作为参数,从而减少代码重复和维护。

【问题讨论】:

  • 对我来说,这听起来像是您在多种测试方法中断言相同的事情。但是你为什么还要多次测试同样的东西呢?
  • 测试不同,每个测试的预期结果和异常都不同......我准备它在一个测试方法中循环多个值
  • 这似乎是基于意见的,但是如果您查看一些复杂的测试(例如 C# 编译器),那么您会看到设置/测试代码已被抽象:@987654321 @

标签: c# unit-testing code-duplication


【解决方案1】:

我会在测试中保留它。提取代码的问题在于它使识别正在测试的内容变得更加困难。而且,如果您需要更改功能,更新测试中的共享代码比更新仅用于该特定测试的代码更困难。

【讨论】:

  • 这也是我个人的看法——尽量让测试保持自我维护。一旦你有你在测试中的生产代码,你总是可以重构它,这样你就不必编写这些类型的测试(因为它们会困扰你)
猜你喜欢
  • 2021-02-21
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
相关资源
最近更新 更多