2012-03-26 2 views
1

Я пытаюсь сделать тесты Junit. Я хочу начать их, попросив метод в системе CMS. Потому что я тестирую плагины. Проблема в том, что я получаю это исключение, и я не знаю почему. Наах, я нахожу, что проблема может заключаться в том, что я использую JUnit 4.8.2, но когда я запускаю тест в Eclipse, все работает нормально. Поэтому я не могу найти решение. Здесь ошибка:Зачем получать AssumptionViolatedException? Junit 4.8.2

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)); 
} 
} 

ответ

2

Предположения являются исключениями, которые JUnit поймает, но которые не подведут тест. Это для «этот тест имеет смысл только в том случае, если» вид вопросов. Например, нет смысла отказываться от тестов Windows-пути в системе Linux - они не могут преуспеть, и их отказ приведет к ошибке, которую вы не можете исправить, не отключив тесты.

То, что я нахожу нечетным, - это скорость и JUnit в одном сообщении об ошибке. Почему Velocity работает JUnit?

Ошибка означает, что путь к классу не настроен правильно. Итак, вам нужно заглянуть в загрузчик классов, который используется для загрузки класса, который содержит метод getTest()

+0

Я хочу начать тесты через систему CMS. Чтобы запросить тесты в системе CMS, вам нужно использовать код скорости. Когда я спрашиваю об этом, я получаю эту ошибку. Если я изменил метод на то, где я не использую JUnit, он работает. Но когда я хочу использовать JUnit внутри, я получаю эту ошибку. – Gynnad

+1

Добавьте JUnit к пути к классам вашей системы CMS. –

+0

Может быть, это работает! :) Я сейчас тестирую это. И насколько я вижу, это работает! Я сделаю более крупные тесты, и если это сработает, я буду вам очень благодарен! – Gynnad

1

Проблема заключалась в том, что система CMS использует JUnit 3.8.2, а плагину нужен JUnit 4.8.2. Это вызвало ошибку, потому что Java принимает новейшую версию JUnit, и это не API API AssumptionViolatedException.

0

Этот класс реализует класс hamcrest, поэтому убедитесь, что у вас есть ящик hamcrest-core на пути к классам.

Смежные вопросы