如何在一个Java类中使用JUnit来单元测试方法,而无需在模块中完成其他类?

时间:2015-02-12 03:09:11

标签: java unit-testing intellij-idea junit

所以我的问题是我正在使用IntelliJ IDEA中的Java项目,在我的工作目录中,我有12-13个Java类文件。

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

我为其中一个类设置了一个testClass,但是,当我尝试运行它时,我猜Java会尝试编译目录中的所有内容,因为其他类没有实现,所以它没有完成编译

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

感谢。

2 个答案:

答案 0 :(得分:3)

如果您的类没有在您正在测试的方法中调用其他类的方法,那么如果编译器无法编译其他类,则它不应该成为问题。如果您正在测试的课程编译,您应该可以在其中运行任何内容。

但是,如果您的班级 在其他一些尚未存在的课程中调用方法,那么您可能只想将"空白"要调用所需类的所有方法的版本。这将使您能够编译您想要测试的类。

如果您希望您调用的方法在单元测试中具有特定行为,为了测试在调用这些方法时可能出现的某些情况,那么您应该看一下使用"模拟框架"。我很乐意推荐JMockit或Mockito(虽然我不得不承认与Mockito开发团队松散关联)。

答案 1 :(得分:0)

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

在使用Java构建软件时,最好的办法是将项目中的文件保持在理智的状态。这将允许您在完成功能时对其进行测试。我在测试代码的过程中处于不利地位,我不得不暂时注释掉代码,直到我可以先解决其他问题为止。

正如@David Wallace所指出的,Mockito和JMockit是基于模拟的测试的绝佳工具,具有类间依赖性。