【发布时间】:2011-02-01 03:00:55
【问题描述】:
我有一个包含多个 junit 类的大型 eclipse 项目。我试图在将运行时资源添加到 eclipse 项目类路径和需要配置多个 junit 启动配置之间取得平衡。
我意识到默认的 Eclipse 构建类路径被所有单元测试配置继承,但是我的一些测试需要额外的运行时资源。我可以将这些资源添加到构建类路径中,但这确实会减慢我的整个项目构建时间(因为 它必须保持更多文件同步)。我不喜欢在运行时类路径中包含 * 资源和 jar 的想法。
我有两个选项,列出了我看到的正面和负面情况
1 : 将所有运行时资源添加到 eclipse 类路径中。
- POS 我可以选择一个单元测试并运行它,而无需配置测试类路径。
- POS 构建类路径上的额外资源意味着 Eclipse 变慢了。
- NEG 更难确保每个测试使用正确的资源。
2 : 配置每个单元测试的classpath
- 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 启动和 jar 清单文件解决方案,但它们似乎都假设在测试可以执行之前运行 ant 构建。我想避免任何 Eclipse 依赖于调用 ant 目标时 重构代码和执行测试。
基本上 - 分离和维护 eclipse buildtime 类路径和 junit 运行时类路径的最简单方法是什么?
【问题讨论】:
标签: eclipse ide ant junit classpath