如何使用 JUnit 对一个 Java class 中的方法进行单元测试,而无需完成模块中的其他 classes?

How do I use JUnit to unit test methods in one Java class, without having completed other classes in the module?

所以我的问题是我正在 IntelliJ IDEA 中处理一个 Java 项目,在我的工作目录中,我有 12-13 Java class 个文件。

我正在研究每个 Java class,我想使用 JUnit 来测试我在每个 class 中实现的方法。

我已经为其中一个 class 设置了一个测试类,但是,当我尝试 运行 它时,我想 Java 会尝试编译目录中的所有内容并且因为其他 classes 没有实现,它没有完成编译。

我的问题是:对单个 class 方法进行单元测试的最佳方法是什么,而不必在我的目录中实现每个 class?(我来自 python 背景所以这个问题在 Java 中是否相关?)

谢谢。

如果您的 class 没有在您正在测试的方法中调用其他 classes 的方法,那么如果编译器无法编译这些其他方法,这应该不是问题classes。如果您正在测试编译的 class,您应该能够 运行 其中的任何内容。

但是,如果您的 class 确实 调用了一些其他 class 中尚不存在的方法,那么您可能只想将"empty" 个要调用到所需 class 中的方法的版本。这将使您能够编译要测试的 class。

如果您希望调用的方法在单元测试中具有特定行为,以便测试调用这些方法时可以出现的某些情况,那么你应该考虑使用 "mocking framework"。我可以很高兴地推荐 JMockit 或 Mockito(尽管我不得不承认与 Mockito 开发团队的关系松散)。

首先,欢迎使用 Java 语言!愿你在 Java 和 Python 度过愉快的时光。大多数构建系统(Ant、Maven、Gradle 等)通常会编译项目目录中的所有源文件。为了成功完成编译阶段,您需要一个遵循语言语义的程序以及可解析的任何引用符号(classes、方法、包等)。

在 Java 中构建软件时,最好的办法是让项目中的文件保持正常状态。这将允许您在完成功能时对其进行测试。我在测试代码时一直处于这样的位置,我不得不暂时注释掉损坏的代码,直到我可以先解决其他问题。

正如@David Wallace 指出的那样,Mockito 和 JMockit 是基于模拟的具有内部 class 依赖性的测试的优秀工具。