У меня есть этот класс:
public class UserPurchaseUtil {
public static final String JSON_PROP_ID = "id";
public static final String JSON_PROP_USER_ID = "user_id";
// See Confluence: First Time Member Promotion (FTM)
public static final String JSON_PROP_LAST_PURCHASE_TIME = "last_purchase_time";
}
Затем я хочу убедиться, что я обращаю внимание на все изменения значений в этом классе, с помощью «обратите внимание», я хочу убедиться, что
- каждый раз, когда я удаляю или добавляю некоторые константы, тест не пройден;
- проверяются все значения.
Итак, у меня есть этот тест:
@Slf4j
@RunWith(MockitoJUnitRunner.class)
public class UserPurchaseUtilTest {
@Test
public void testNumberOfConstantsAndTheirValues() {
int numberOfConstants = UserPurchaseUtil.class.getDeclaredFields().length;
// just to ensure we test all the constants' values when we add new ones. Now is 3.
Assert.assertEquals(3, numberOfConstants);
Assert.assertEquals("id", UserPurchaseUtil.JSON_PROP_ID);
Assert.assertEquals("user_id", UserPurchaseUtil.JSON_PROP_USER_ID);
Assert.assertEquals("last_purchase_time", UserPurchaseUtil.JSON_PROP_LAST_PURCHASE_TIME);
}
}
Но этот простой тест не пройден:
expected:<3> but was:<4>
Expected :3
Actual :4
<Click to see difference>
Тогда почему?
РЕДАКТИРОВАТЬ:
OMG.Теперь при отладке я вижу четвертое поле.
private static transient boolean[] com.xxx.utils.UserPurchaseUtil.$jacocoData
Это проект Spring Boot.