我有一个包含多个 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/