【问题标题】:How do I use JUnit to unit test methods in one Java class, without having completed other classes in the module?如何使用 JUnit 对一个 Java 类中的方法进行单元测试,而无需完成模块中的其他类?
【发布时间】:2015-02-12 03:09:11
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

    标签: java unit-testing intellij-idea junit


    【解决方案1】:

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

    但是,如果您的类确实调用了其他尚不存在的类中的方法,那么您可能只想放置您想要调用的所有方法的“空”版本进入所需的类。这将使您能够编译您希望测试的类。

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

    【讨论】:

    • 感谢您的回复。我的类不调用其他类的方法,但是当我尝试运行包含我的 JUnit 测试的 Tests.java 文件时,它会尝试编译我目录中的所有 .java 文件并且不显示测试结果,只是编译其他尚未完全实现的类的错误。
    【解决方案2】:

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

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

    正如@David Wallace 指出的那样,Mockito 和 JMockit 是用于具有类间依赖关系的基于模拟的测试的出色工具。

    【讨论】:

    • 谢谢!我仍然无法看到我的测试结果,但我会继续努力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多