Eclipse 构建时和运行时类路径,可轻松执行 junit 测试用例

标签 eclipse ide ant junit classpath

我有一个包含多个 junit 类的大型 Eclipse 项目。我试图在向 eclipse 项目类路径添加运行时资源和配置多个 junit 启动配置的需要之间取得平衡。

我意识到默认的 eclipse 构建类路径是由所有单元测试配置继承的,但我的一些测试需要额外的运行时资源。我可以将这些资源添加到构建类路径中,但这确实会减慢我的整体项目构建时间(因为 它必须保持更多文件同步)。我不喜欢在运行时类路径中包含 * 资源和 jar 的想法。

我有两个选项,列出了我看到的正面和负面案例

1:将所有运行时资源添加到 eclipse 类路径。

  • POS 我可以选择一个单元测试并运行它,而无需配置测试类路径。
  • POS 构建类路径上的额外资源意味着 Eclipse 速度变慢。
  • NEG 更难以确保每次测试都使用正确的资源。

2:配置每个单元测试的类路径

  • POS 我确切地知道测试正在使用哪些资源。
  • POS 较小的构建类路径意味着 Eclipse 的构建和执行速度更快。
  • NEG 必须设置多个单独的 junit 运行时类路径是一件很痛苦的事情。

理想情况下,我想配置一个基本的 junit 运行时配置,它采用默认的 eclipse 构建类路径,添加额外的运行时 jar 和资源。然后,特定的 junit 测试用例可以重用此配置,这样的事情可能吗?

查看可以导出到共享项目文件的特定 junit 启动配置

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
<stringAttribute key="bad_container_name" value="/CR-3089_5_1_branch."/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/CR-3089_5_1_branch/src/com/x/y/z/ParserJUnitTest.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.x.y.z.ParserJUnitTest"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="CR-3089_5_1_branch"/>
</launchConfiguration>

是否可以扩展/重用此配置,并参数化“org.eclipse.jdt.launching.MAIN_TYPE”值?

我知道用于配置类路径的 commons launch 和 jar list 文件解决方案,但它们似乎都假设在执行测试之前运行 ant 构建。我想避免任何 Eclipse 依赖于调用 ant 目标 重构代码并执行测试。

基本上 - 分离和维护 eclipse 构建时类路径和 junit 运行时类路径的最简单方法是什么?

最佳答案

第一个解决方案可能是将项目与其单元测试完全分离:

  • 当前构建的一个项目
  • 一个用于 JUnit 测试的项目(如果涉及不同类型的类路径,则为多个项目):该项目将在其依赖项中包含第一个开发项目,并且不必指定该开发的类路径。

一种更简洁的方法(因为它可以在 Eclipse 中使用,但也可以在 Eclipse 之外使用)是在 Maven 中转换您的项目,through m2eclipse例如。
这样,maven 就可以管理多个项目的依赖组合,以便为测试任务提供正确的类路径。

关于Eclipse 构建时和运行时类路径,可轻松执行 junit 测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2522519/

相关文章:

java - 在Eclipse中,是否有一个 View 显示当前选中元素的成员

java - Selenium IDE 定位器在 Selenium 3.3.1 Java 中不起作用

delphi - 如何打印到 C++Builder 输出窗口

GWTP - 尝试写入镜像包时发生错误

android - 重新打包 APK 文件以包含自定义 Assets - 使用什么构建工具?

java - Maven 项目中 TLD 文件的正确/推荐位置是什么

android - 无法启动 AVD

java - Ant <taskdef> 问题 - 未找到类名

java - 如何在 Eclipse 中开启 Tomcat 的自动重启?

c++ - 代码信息