为什么要获得AssumptionViolatedException? Junit 4.8.2

时间:2012-03-26 14:47:48

标签: unit-testing velocity junit4

我正在尝试进行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));
}
}

3 个答案:

答案 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。