2010-03-21 3 views
7

Я использую Junit 4. Вся моя программа работает нормально. Я пытаюсь написать тестовый пример. Но есть одна ошибка ...Проблема с Java Junit test

здесь очень простой тестовый образец

public class di extends TestCase{ 
    private static Records testRec; 
    public void testAbc() { 
     Assert.assertTrue(
      "There should be some thing.", 
      di.testRec.getEmployee() > 0); 
    } 

} 

и когда я запускаю это он дает мне ошибку, что

fName can not be null 

, если я использую супер и сделать так

public TestA() { 
super("testAbc"); 
} 

это работа все хорошо. Это не было это раньше с JUnit 3.X я делаю неправильно или они изменили его :( Извините, если я не ясно

Есть ли способ executre тест без супер? Или вызова функций и т.д.?

+0

Что такое TestAgnes? Он не упоминается в первом фрагменте кода. Пожалуйста, очистите свой вопрос. – Bozho

ответ

16

в JUnit 4 вам не нужно расширить TestCase, вместо этого использовать @Test аннотации, чтобы отметить ваши методы испытаний:

public class MyTest { 
    private static Records testRec; 
    @Test 
    public void testAbc() { 
     Assert.assertTrue(
      "There should be some thing.", 
      MyTest.testRec.getEmployee() > 0); 
    } 
} 

в качестве примечания, тестирование static члена в вашем классе может сделать ваши модульные тесты зависят друг от другое, что не очень хорошо. У меня есть очень веская причина для этого, я бы рекомендовал удалить квалификатор static.

+1

Спасибо за ваш ответ. Когда я попробовал это, он дал мне ошибку «Тип несоответствия: невозможно преобразовать из теста в аннотацию», что мне следует избегать этой ошибки? Это дает мне, если я использовал @Test – user238384

+4

Похоже, что вы импортировали еще один тестовый класс, который не является аннотацией. Убедитесь, что вы импортируете 'org.junit.Test', что должно решить проблему. –

+0

спасибо, что это сработало! ! ! – user238384

0

Это не ваш случай, но эта ошибка также может означать, что у вас есть файл с именем Test.java в вашем проекте. Переименование исправляет ошибку, но после рефакторинга @Test будет изменен на @NewName (по крайней мере, в Eclipse), поэтому не забудьте вручную изменить его на @Test.