Всякий раз, когда я пытаюсь протестировать свой код с помощью JUnit, я получаю исключение NullPointerException - даже если я не получаю это исключение при запуске реальной программы. Строка, которая дает мне исключение:
assertEquals(0.0, TweetClassification.tweetType[TweetClassification.SIGNIF_OTHER].likelihoodA);
Начало класса TweetClassification, который он тестирует, выглядит следующим образом:
public class TweetClassification
{
// CONSTANTS =============================================
public static final int TCNUMBER = 5; // number of TweetCategories (including the null category)
// using constants to indicate the names of the TweetCategories, so that they could be renumbered
public static final int NULLTWEET = 0;
public static final int SIGNIF_OTHER = 1;
public static final int FRIENDS = 2;
public static final int WORK = 3;
public static final int FOOD = 4;
public static final TweetCategory[] tweetType = new TweetCategory[TCNUMBER];
...
(TweetCategory - это еще один класс, который определяется отдельно в пакете.) Поэтому я понимаю, что этот код инициализирует массив, но не его члены, и, вероятно, поэтому я получаю исключение (?) Но дело в том, что я выполнить инициализацию членов массива в методе main класса TweetClassification следующим образом:
for (int i=0; i<TCNUMBER; i++)
{
tweetType[i] = new TweetCategory();
}
Но если я попытаюсь переместить цикл for за пределы основного метода с константами, я получу синтаксическую ошибку - я предполагаю, что вы не должны использовать цикл for вне метода. Поэтому я не уверен, как правильно инициализировать класс для работы JUnit - либо я делаю это вне метода main и получаю синтаксическую ошибку, либо я делаю это внутри метода main и получаю исключение NullPointerException. Есть идеи?