0

我有一个 jar 文件列表,所有文件都包含同一系统的略有不同的版本。

我想在每个 jar 文件上执行一组测试用例,同时能够获得每个 jar 的结果(通过 RunListener 或类似的东西)。

我对隐含的类加载问题有点困惑。

我怎样才能很好地做到这一点?

4

2 回答 2

2

如果您使用的是 ant,则 JUnit 任务采用类路径。

<target name="test">
  <junit ...">
    <classpath>
      <pathelement path="${test.jar.path}" />
    </classpath>
    ...
  </junit>
</target>

您可以使用 antcall 任务使用不同的 test.jar.path 属性值重复调用您的测试目标。

于 2009-01-07T11:08:09.560 回答
0

如果 jar 保持相同的界面,那么您所要做的就是使用稍微不同的类路径运行每个测试 - 每次使用来自另一个版本的 jar。

如果您使用 Eclipse JUnit 集成,只需创建 N 个运行配置,在类路径选项卡中的每个配置中指定所需的 jar。

如果您想以编程方式执行此操作,那么我建议您从空类路径开始并使用URLClassLoader,每次都给它一组不同的 jar。

像这样的东西:

URLClassloader ucl = new URLClassLoader( list of jars from version1 );
TestCase tc = ucl.loadClass("Your Test Case").newInstance();
tc.runTest();

ucl = new URLClassLoader( list of jars from version2 );
TestCase tc = ucl.loadClass("Your Test Case").newInstance();
tc.runTest();
于 2009-01-07T10:40:54.593 回答