2013-09-16 4 views
-1

Все кажется идеальным, но тестовый случай продолжает терпеть неудачу, давая мне исключение Java.lang.nullPointerException для всех этих.Почему этот случай JUnit не подходит?

Вот тест

@Test 
    public void validMonths() { 
     DayOfWeek dow = new DayOfWeek(1, 1, 1900); 
     assertTrue(dow.getMonthString().compareTo("January") == 0); 
     dow = new DayOfWeek(2, 1, 1900); 
     assertTrue(dow.getMonthString().compareTo("February") == 0); 
     dow = new DayOfWeek(3, 1, 1900); 
     assertTrue(dow.getMonthString().compareTo("March") == 0); 
     dow = new DayOfWeek(4, 1, 1900); 
     assertTrue(dow.getMonthString().compareTo("April") == 0); 
     dow = new DayOfWeek(5, 1, 1900); 
     assertTrue(dow.getMonthString().compareTo("May") == 0); 
     dow = new DayOfWeek(6, 1, 1900); 
     assertTrue(dow.getMonthString().compareTo("June") == 0); 
     dow = new DayOfWeek(7, 1, 1900); 
     assertTrue(dow.getMonthString().compareTo("July") == 0); 
     dow = new DayOfWeek(8, 1, 1900); 
     assertTrue(dow.getMonthString().compareTo("August") == 0); 
     dow = new DayOfWeek(9, 1, 1900); 
     assertTrue(dow.getMonthString().compareTo("September") == 0); 
     dow = new DayOfWeek(10, 1, 1900); 
     assertTrue(dow.getMonthString().compareTo("October") == 0); 
     dow = new DayOfWeek(11, 1, 1900); 
     assertTrue(dow.getMonthString().compareTo("November") == 0); 
     dow = new DayOfWeek(12, 1, 1900); 
     assertTrue(dow.getMonthString().compareTo("December") == 0); 
    } 

А вот мой метод

public String getMonthString(){ 
     String[] arrayOfMonths = new String[11]; 
     arrayOfMonths[0] = "January"; 
     arrayOfMonths[1] = "February"; 
     arrayOfMonths[2] = "March"; 
     arrayOfMonths[3] = "April"; 
     arrayOfMonths[4] = "May"; 
     arrayOfMonths[5] = "June"; 
     arrayOfMonths[6] = "July"; 
     arrayOfMonths[7] = "August"; 
     arrayOfMonths[8] = "September"; 
     arrayOfMonths[9] = "October"; 
     arrayOfMonths[10] = "November"; 
     arrayOfMonths[11] = "December"; 
     if (this.myMonth > 0 && this.myMonth <=12){ 
      return arrayOfMonths[this.myMonth-1]; 
     } 
     else{ 
      return "NO_VALUE"; 
     } 
    } 

Кто-нибудь знает, что происходит?

+0

Было бы полезно, если бы вы опубликовали трассировку стека и указали, какая строка выбрасывает исключение. –

+0

Эта строка является следствием сбоя, assertTrue (dow.getMonthString(). CompareTo («Январь») == 0); –

+0

Либо dow имеет значение null, dow.getMonthString() равно null, либо compareTo() выбрасывает NPE. Распечатайте dow и dow.getMonthString(). –

ответ

1

arrayOfMonths должен быть размер 12, а не 11.

EDIT: Кто upvoted меня не должно быть. :-) Это будет throw и ArrayIndexOutOfBoundsException, а не NPE. Это по-прежнему реальная проблема, а не тот, который у него есть.

+0

По-прежнему не удается после того, как я изменил это –

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