2

正如在不同位置所提到的,maven(3.0.1 版)不支持项目外部的 CLASSPATH。因此,当 jUnitTest 想要启动外部应用程序(如 OpenOffice ie)时,它会在启动命令 '$> mvn test' 时失败。在 Eclipse 中,我可以在“运行配置”中手动添加 CLASSPATH,然后它就可以正常工作了。

我的问题:我可以在我的 jUnitTest 源代码中添加代码来验证我在 Eclipse 中吗?因为这只会跳过命令行上的测试。而其他测试仍在命令行上继续进行。

4

3 回答 3

3

您可以使用Maven 配置文件来激活不同的属性、运行不同的命令、根据需要修改类路径,甚至过滤掉一些测试。例如,您可以创建仅在 Eclipse 中使用的特定配置文件。

于 2013-01-21T14:07:58.957 回答
3

编写一个类来验证您要使用的类是否已加载(由于类加载器的工作方式,需要是一个单独的类。它将类似于

public class OODetector {
  public static boolean isOOOnClassPath() {
    try {
      OODetector.class.getClassLoader().loadClass("org.... class name here ...");
      return true;
    } catch (Throwable t) {
      return false;
    }
  } 
}

现在在任何需要类路径上的类的测试开始时,只需放置Assume.assumeThat(OODetector.isOOOnClassPath(), is(true));,在这种情况下您的测试将被跳过,例如

public class OOTests {
  @Test
  public void smokes() throws Exception {
    Assume.assumeThat(OODetector.isOOOnClassPath(), is(true));
    // rest of test
  }
}

或者更好的是,把它放在@BeforeClass 中,例如

public class OOTests {
  @BeforeClass
  public static void smokes() throws Exception {
    Assume.assumeThat(OODetector.isOOOnClassPath(), is(true));
  }

  // tests
}

如果 OO 不在类路径上,这将跳过类中的所有测试,不影响失败计数,但保持总测试计数有效,并且当您找出正确方法将运行时依赖项获取到 Maven 启动的测试时类路径然后测试将神奇地开始运行

于 2013-01-21T15:09:48.580 回答
0

只需添加一个运行时或 VM 标志,您可以在代码中测试其值。

于 2013-01-21T13:45:29.700 回答