У меня есть следующие классы, где второй класс является конечным полем stati c первого:
public class BaseItemScan {
protected String initItem(){
...
}
}
public class ItemScan extends BaseItemScan {
private static final ItemFactory if = ItemFactory.getInstance();
public void handleItem(){
super.initItem();
...
}
}
Класс фабрики содержит конструктор и метод getInstance:
public class ItemFactory {
private static ItemFactory INSTANCE = null;
public static ItemFactory getInstance() {
if (INSTANCE == null) {
throw new IllegalStateException("ItemFactory not initialized!");
} else {
return INSTANCE;
}
}
public ItemFactory () {
if (INSTANCE != null) {
throw new IllegalStateException("ItemFactory already initialized!");
} else {
INSTANCE = this;
}
}
}
Как можно проверить handleItem? Для следующего кода:
public class ItemScanTest {
@InjectMocks
ItemScan itemScan= new ItemScan();
@Rule
public MockitoRule rule = MockitoJUnit.rule();
@Test
void testHandleItem() {
itemScan.handleItem();
}
}
Сообщение об ошибке:
Caused by: java.lang.IllegalStateException: ItemFactory not initialized!
at ItemFactory.getInstance(ItemFactory.java:)
at ItemScan.<clinit>(ItemScan.java:)