【问题标题】:JUnit testing a comprehensive method [duplicate]JUnit测试综合方法[重复]
【发布时间】:2017-11-16 17:07:59
【问题描述】:

我有一个非常全面的方法。在此方法中调用了几个其他方法,每个方法都依赖于前一个方法。

我的问题是:使用 JUnit 测试这种复杂方法的最佳方法是什么?

我可以只创建一个@Test 方法并在此方法中调用其他方法吗?例如:

@Test
public void testRun(){
    testMethod1();
    testMethod2();
    ...
}

testMethod1(){
assertNotEquals();
...
}

我不敢相信它这么容易。自己测试每种方法不是更好吗?但是我该如何实现呢?他们有什么最佳做法吗?

但也许这是正确的方法。

感谢您的任何建议!:)

【问题讨论】:

  • 是什么让您认为您不能单独测试每种方法?应该可以在之前设置某个状态并在之后检查结果。
  • 你的方法不应该太复杂。保留您的方法as short as possible。然后测试它们和维护你的代码库会更容易。
  • 我猜他们是私人的。但是,是的,当您在编写测试时遇到困难时,这表明代码可能质量不高
  • 首先你应该问问自己为什么它这么复杂,你是否可以拆分它。然后,通常“其他方法”是私有的,所以你不能直接测试它们。如果可以,当然应该这样做。
  • 无论您的方法是否复杂,或者在内部调用许多其他方法都无关紧要:测试返回值和/或调用它的相关副作用。

标签: java junit


【解决方案1】:

你必须先重构综合方法。

您暗示内部方法相互依赖。这通常意味着它们共享和更新相同的“状态”。

尝试将此状态提取到一个对象中,并将此对象作为每个内部方法的参数。

这将允许您单独测试内部方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-05
    • 2016-07-20
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多