所以我的问题是我正在使用IntelliJ IDEA中的Java项目,在我的工作目录中,我有12-13个Java类文件。
我正在研究每个Java类,我想使用JUnit来测试我在每个类中实现的方法。
我为其中一个类设置了一个testClass,但是,当我尝试运行它时,我猜Java会尝试编译目录中的所有内容,因为其他类没有实现,所以它没有完成编译
我的问题是:在不必实现目录中的每个类的情况下,对单个类方法进行单元测试的最佳方法是什么?(我来自python背景,这个问题在Java中是否相关?)
感谢。
答案 0 :(得分:3)
如果您的类没有在您正在测试的方法中调用其他类的方法,那么如果编译器无法编译其他类,则它不应该成为问题。如果您正在测试的课程编译,您应该可以在其中运行任何内容。
但是,如果您的班级 在其他一些尚未存在的课程中调用方法,那么您可能只想将"空白"要调用所需类的所有方法的版本。这将使您能够编译您想要测试的类。
如果您希望您调用的方法在单元测试中具有特定行为,为了测试在调用这些方法时可能出现的某些情况,那么您应该看一下使用"模拟框架"。我很乐意推荐JMockit或Mockito(虽然我不得不承认与Mockito开发团队松散关联)。
答案 1 :(得分:0)
首先,欢迎使用Java语言!愿你和Java一样享受Java的时间。大多数构建系统(Ant,Maven,Gradle等)通常编译项目目录中的所有源文件。为了使编译阶段成功完成,您需要一个遵循语言语义的程序以及可以解析的任何引用的符号(类,方法,包等)。
在使用Java构建软件时,最好的办法是将项目中的文件保持在理智的状态。这将允许您在完成功能时对其进行测试。我在测试代码的过程中处于不利地位,我不得不暂时注释掉代码,直到我可以先解决其他问题为止。
正如@David Wallace所指出的,Mockito和JMockit是基于模拟的测试的绝佳工具,具有类间依赖性。