我正在尝试进行Junit测试。我想通过在CMS系统中寻求一种方法来启动它们。因为我正在测试插件。问题是我得到了这个例外,我不知道为什么。 Naah我发现问题可能是我正在使用JUnit 4.8.2,但是当我在Eclipse中运行测试时一切正常。所以我找不到解决方案。这是错误:
org.apache.velocity.exception.MethodInvocationException: Invocation of method
'getTest' in class nl.company.cms.three.viewtool.LoginViewTool threw exception
java.lang.NoClassDefFoundError: org/junit/internal/AssumptionViolatedException at
working/2a90929a-3fbf-43e9-9961-4a40279ec907_5c6e0bff-cfeb-44c6-86e2-
a0ba40e7b66c.field[line 1, column 15]
这是我的类和测试类的代码: 调用启动测试的类:
public String getTest(){
Result r = org.junit.runner.JUnitCore.runClasses(MyTestClass.class);
if(r.getRunCount() > 0){
String s = "Failcount = " + r.getFailureCount() + " // " +
r.getRunCount() + " in " + r.getRunTime() + " ms";
System.out.println(r.getFailures().get(0).getTrace());
System.out.println("Runcount: "+r.getRunCount());
System.out.println("Runtime: "+r.getRunTime());
System.out.println("Ignore count: "+r.getIgnoreCount());
System.out.println("Failure count: "+ r.getFailureCount());
return s;
}
else{
return "Something ging kei verkeerd jonge!";
}
}
测试类:
public class MyTestClass {
@Test
public void testMultiply() {
CustomLoginViewTool tester = new CustomLoginViewTool();
assertEquals("Result", 40, tester.multiply(10, 5));
}
@Test
public void testMultiply1() {
CustomLoginViewTool tester = new CustomLoginViewTool();
assertEquals("Result", 50, tester.multiply(10, 5));
}
@Test
public void testMultiply2() {
CustomLoginViewTool tester = new CustomLoginViewTool();
assertEquals("Result", "ASDF", tester.multiply(10, 5));
}
@Test
public void testMultiply3() {
CustomLoginViewTool tester = new CustomLoginViewTool();
assertEquals("Result", 50, tester.multiply(10, 5));
}
@Test
public void testMultiply4() {
CustomLoginViewTool tester = new CustomLoginViewTool();
assertEquals("Result", 47, tester.multiply(10, 5));
}
@Test
public void testMultiply5() {
CustomLoginViewTool tester = new CustomLoginViewTool();
assertEquals("Result", 50, tester.multiply(10, 5));
}
}
答案 0 :(得分:2)
假设是JUnit将捕获但不会使测试失败的异常。这些是“这个测试只有在有问题时才有意义”。例如,Linux系统上的Windows路径测试没有任何意义 - 它们无法成功,如果不通过它们,则会在不禁用测试的情况下为您提供无法解决的错误。
我发现奇怪的是单个错误消息中的Velocity和JUnit。为什么Velocity运行JUnit?
错误表示类路径未正确设置。所以你需要查看用于加载包含方法getTest()
答案 1 :(得分:1)
问题是CMS系统使用JUnit 3.8.2,插件需要JUnit 4.8.2。这导致了错误,因为Java采用了最新版本的JUnit,而且它没有AssumptionViolatedException的API。
答案 2 :(得分:0)
该类实现了一个hamcrest类,因此请确保在类路径中有hamcrest-core jar。