【问题标题】:Is it possible to load test classes from src/test in src/main?是否可以从 src/main 中的 src/test 加载测试类?
【发布时间】:2020-05-31 15:28:49
【问题描述】:

我是 Java 和 JUnit 技术的新手,我不明白为什么我不能在 src/main 类中为 src/test 中的类创建实例?

例如:

我的 JUnit 跑步者在第二个模块的 src/main 中(我对第一个模块有依赖)。 用于过滤测试的 JUnit 运行器需要 MethodSelector 对象,但在构造函数中我必须放置 Class javaClass、String methodName 参数。当我尝试从 src/test 在 src/main 中为我的测试类创建实例时,我无法导入此类...

我知道在 src/main 中创建测试实例时它不是最佳实践,但我的运行器必须是控制台应用程序,所以如果我理解得很好,它应该在 src/main 中? 在过去的两周里,我还没有看到没有类实例和方法名参数的过滤测试的另一种方法。

我试着这样做

def class = Class.forName("package.from.src.test")

但我总是遇到 java.lang.ClassNotFoundException 错误。

有人可以帮忙吗?谢谢

【问题讨论】:

  • 你没有理由从你的 main 访问测试类,所以你应该修复你的设计。为什么您的 JUnit 运行器在 main 中而不是在 test 中?它不是应用程序代码,所以它在错误的地方。在test 下进行测试。
  • JUnit runner 和其他助手在 src/main 因为我想创建控制台或服务应用程序。据我所知,您无法从 src/test 路径创建 widnows 服务或控制台应用程序?
  • Junit runner 不应成为您服务的一部分。它只是用于运行测试
  • tim_yates 你能解释你的答案为什么吗?
  • 因为这就是它的目的...我猜你可以使用它...就像你可以用铲子盛食物...这不是完成的事情,也不是创作者所涵盖和测试的目的。你能想出一个简单的例子来说明你正在尝试做什么吗?也许我们可以提供更好的建议?

标签: java groovy junit junit5


【解决方案1】:

我很晚才发布此消息,但希望它对某人有所帮助。

我能够使用以下 gradle 条目从 src/test 访问一个类到 src/main。我不确定如何使用非 gradle 项目。

sourceSets {
    main {
        java {
            srcDirs 'src/main/java'
            srcDirs 'src/test/java'
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-18
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2021-07-24
    • 2015-03-22
    相关资源
    最近更新 更多