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

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

我对隐含的类加载问题感到困惑。

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

有帮助吗?

解决方案

如果您正在使用ant,则JUnit任务将使用类路径。

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

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

其他提示

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

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

如果你想以编程方式进行,那么我建议你从空类路径开始并使用 URLClassLoader ,每次都给它一套不同的罐子。

这样的事情:

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();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top