I'm модульного тестирования метода статической полезности класса:статический инициализатор, кажется, не работать во время тестов JUnit
@Test
public void createGenreString()
{
//Arrange
String expected1 = "Action, Adventure, Animation,
//Act
String actual1 = Utils.createGenreString(new int[]{28, 12, 16, 35});
//Assert
assertThat(actual1, is(equalTo(expected1)));
}
Этого статический метод с доступом вида объекта статической карты (MovieDbContract.GENRES), из который он извлекает значения String, используя Integer ключи:
public static String createGenreString(int[] genreIds)
{
StringBuilder sb = new StringBuilder();
int length = genreIds.length;
for (int i = 0; i < length && genreIds[i] != 0; i++)
{
if (i != 0) sb.append(", ");
String genre = MovieDbContract.GENRES.get(genreIds[i]);
sb.append(genre != null ? genre : "Unknown");
}
return sb.toString();
}
этот статический объект карты должны быть заполнены данными через статический инициализатор:
public static final SparseArray<String> GENRES = new SparseArray<>();
static
{
GENRES.put(28, "Action");
GENRES.put(12, "Adventure");
GENRES.put(16, "Animation");
.
.
}
проблема заключается в том, что при запуске теста объект карты имеет значение null, он не заполняется данными, поэтому тест не выполняется. но сама программа прекрасно работает с данными. кто-нибудь идея, почему во время тестов это другое? Я использую JUnit 4.12, и все это делается в среде Android.
Пожалуйста, отправьте сообщение [MCVE]. –
Нам нужно посмотреть, где и как объявлена и назначена переменная 'Genres'. – SamTebbs33
обновил объявление – Lemao1981