Junit测试方法

时间:2013-12-19 10:25:10

标签: java unit-testing junit

我总是对Junit中的方法感到困惑。

  1. 如果有人问我是否可以在Junit中使用私有/受保护的测试方法,那么他是在谈论应该从测试开始的方法或者在Junit中使用setup(),teardown()等任何其他方法。

  2. Junit方法的返回类型是什么。所以我一直看到返回类型使用为Void所以我们可以更改返回类型吗?

  3. 现在有时问题就像我可以使用Junit测试私有方法一样。所以我知道Junit默认情况下会调用以test开头的方法,它应该是Public,然后才能使用Junit在类之外调用。因此,如果我将测试方法声明为私有,Junit将如何调用它或在课堂外测试它。

3 个答案:

答案 0 :(得分:1)

1)您的测试方法应该是公开的。

2)返回类型总是无效。

3)你不测试你在类中测试公共方法的私有方法,这反过来可能会调用私有方法中的逻辑。您应该尝试覆盖这些私有方法中的所有代码分支。

答案 1 :(得分:0)

来自org.junit.Test注释文档

Test annotation告诉JUnit它附加的 public void 方法可以作为测试用例运行

答案 2 :(得分:-1)

为了测试私有方法,我建议将它们保护或打包保护。然后,您可以创建一个子类来覆盖该方法并对其进行测试。

我看过很多帖子断言你不得测试私人方法。我无法想象不那么有用的束缚。如果您正在尝试重构代码,那么您自己和周围的每个人都有义务创建一组测试,以确保在您开始更改代码之前保留功能。如果回归问题被适当地限制,您就可以开始重构/重新测试/重构。

同样,内部方法通常是进行故障识别或恢复的地方。对这些方法的测试要求执行适当的数据防火墙并识别“不可能”的情况。还应检查恢复操作,以确定它们也处理“不可能”的情况。

使用反射来测试私有方法是最后的手段,但如果您不能更改被测试的类或者您有来自管理层的订单,则可能需要使用反射来测试私有方法。 “糟糕的做法”是你违反了封装。但是,封装只是黑盒测试的关注点;白盒测试的过程涉及查找所有代码是否有效,而不仅仅是可见的东西。