是否可以通过e JUnit测试判断它是否在Eclipse中运行(而不是ant)

tom*_*dee 8 java xml eclipse ant junit

我有一个测试,它将大量预期的XML与实际收到的XML进行比较.如果XML明显不同,则将实际的XML写入磁盘进行分析,测试失败.

我更喜欢使用assertEquals,以便我可以在Eclipse中更轻松地比较XML - 但这可能会导致非常大的JUnit和CruiseControl日志.

有没有办法可以改变JUnit测试行为,具体取决于它是通过Eclipse运行还是通过Ant运行.

Ale*_*exR 9

这是2个解决方案.

使用系统属性

boolean isEclipse() {
    return System.getProperty("java.class.path").contains("eclipse");
}
Run Code Online (Sandbox Code Playgroud)

使用stacktrace

boolean isEclipse() {
    Throwable t = new Throwable();
    StackTraceElement[] trace = t.getStackTrace();
    return trace[trace.length - 1].getClassName().startsWith("org.eclipse");
}
Run Code Online (Sandbox Code Playgroud)