首页 > 解决方案 > JUnit:放置测试方法的最佳策略

问题描述

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

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

据我所知,我在技术上可以每 3 种方式做一次,但我没有这方面的经验,所以我从一开始就要求一些指导来做这件事。

编辑

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

标签: javajunit

解决方案


每个“真实”课程都有 1 个测试课程。

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

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

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

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

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

但这些将是您单元测试的补充。

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

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

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


推荐阅读