【问题标题】:Eclipse buildtime and runtime classpaths for easy execution of junit test casesEclipse 构建时和运行时类路径,用于轻松执行 junit 测试用例
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我没有从strach开始的选项,需要专注于我现有的配置。
    • @emeraldjava:理解,创建新项目将是隔离问题的好方法,而 m2eclipse 则非常类似于从头开始。所以希望我的第一个选项对您的情况有所帮助。
    猜你喜欢
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多