0

我选择了JUnit Ant 任务解决方案,通过任务元素提供JUnit 库:

<target name="test" depends="compile-tests" description="Run unit tests">
    <junit printsummary="true" haltonfailure="true">
        <classpath refid="test.classpath" />
        <test name="com.package.TestClass" />
    </junit>
</target>

使用的重要类路径是:

<path id="test.compile.classpath">
    <path refid="compile.classpath" />
    <path refid="test.lib.classpath" />
    <pathelement location="${build.classes.dir}" />
</path>

<path id="test.classpath">
    <path refid="test.compile.classpath" />
    <pathelement path="${test.classes.dir}" />
</path>

使用 junit.jar 引用的是一个Ant Maven 任务

<artifact:dependencies pathId="test.lib.classpath">
    <dependency groupId="junit" artifactId="junit" version="4.11" />
</artifact:dependencies>

现在,问题是运行此任务时出现异常:

java.lang.NoClassDefFoundError: junit/framework/TestListener

解决方案是将fork="true"属性添加到任务中:

<junit printsummary="true" haltonfailure="true" fork="true">

我的问题是:

  • 为什么在不运行新的 JVM 实例的情况下,JUnit Ant 任务无法将 junit.jar 包含在运行时中?
  • 这个运行时实际上是什么?它是执行 Ant 脚本的那个吗?将 jar 附加到运行时是不可能的吗?我认为这将是标准的类加载。
4

0 回答 0