gpt4 book ai didi

java - JUnit:放置测试方法的最佳策略

转载 作者:行者123 更新时间:2023-11-29 06:48:59 25 4
gpt4 key购买 nike

我开始了一个项目并第一次使用 JUnit。

放置测试用例的最佳做法是什么?

  • 每个“真实”类 1 个测试类。

  • 每个包甚至整个项目 1 个测试类。

  • 没有测试类的“真实”类中的测试方法。

据我所知,我可以在技术上每 3 种方法做一次,但我没有这方面的经验,所以我请求一些指导,以便从一开始就正确地做。

编辑

我说的是代码单元测试。我也在使用 Maven,但我认为这对我的问题并不重要。

最佳答案

1 test class for every "real" class.

我通常采用这种模式。当然,接口(interface)测试没有多大意义,有时只有 getter 和 setter 方法(即没有逻辑)的小型“实体”类不需要相应的测试类。

也就是说,我对在单元测试中发现的实用性感到惊讶,即使是在非常小的类上也是如此。例如,即使是通过 DAO 方法存储在数据库中的只有 get/set 方法的实体类也应该进行测试,以防某些数据库连接不正确。您永远不知道什么时候有不匹配的 get/set 方法,或者 toString()、非对称 hashcode()equals(),或者其他问题。

“单元”测试的全部意义在于(恕我直言)单独测试代码的最小单元——这就是类。因此,当我有一个 ContainerUtil 类时,我会在测试目录中寻找相应的 ContainerUtilTest 类。我经常运行覆盖测试,我希望所有类的任何逻辑部分都能被覆盖。

1 test class for every package or even the complete project.

我可能也有,但我认为这些是“集成”测试。测试在类之间或项目的各个部分之间架起桥梁,以确保您的项目作为一个整体工作。

但这些将附加到您的单元测试中。

Test methods in the "real" class without a test class.

是的,没有。真是个坏主意。如果可能的话,您不希望您的生产代码包含测试代码。它会降低你的类的可读性,增加你在尝试测试时破坏某些东西的变化等等。直接说不。

我还让我的测试类远离我的源代码。我通常使用 Maven,所以我在 src/main/java 中有我的源代码,在 src/test/java 中有我的测试。您不希望您的测试最终出现在 jar 或 war 文件中,因为它们可能会使其他人感到困惑。

关于java - JUnit:放置测试方法的最佳策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55839228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com