TL; DR Как написать единичные тесты для кода платформы NetBeans, который использует статические методы для поиска зависимостей?Как проверить код платформы NetBeans, который использует Lookups?
В приложении платформы NetBeans я сталкиваюсь кода, как это:
MyService service = Lookup.getDefault().lookup(MyService.class);
service.doStuff(....);
мне статический доступ кажется как антипаттерн и трудно проверить. Когда я вокруг Google, я только нахожу комментарии о низкой связи и высокой когезии, телеинтерфейсах и т. Д.
Многие люди, похоже, think this is a Good Idea, но мне интересно, как я могу написать разумный модульный тест для такого кода, не прибегая к издевательским статическим методам или с помощью функции Lookup в моем модульном тесте.
Первая мысль, которая приходит на ум, чтобы реорганизовать поиск как регулярная зависимость:
public class MyClass {
private Lookup lookup = Lookup.getDefault();
public void myMethod() {
MyService service = lookup.lookup(MyService .class);
service.doStuff(....);
}
public void setLookup(Lookup lookup) {
this.lookup = lookup;
}
И затем использовать сеттер предоставить макет Lookup для тестирования.
Это будет работать, но все же вызывает проверку кода, вызванного Lookup.getDefault()
, прежде чем устанавливать макет. Не существует регулярного механизма впрыска зависимостей, предоставляемого платформой Netbeans, поэтому, если я его внедряю, похоже, что он плавает против потока.
У меня такое чувство, что я чего-то не хватает. Существует ли стандартный подход для написания модульных тестов для кода платформы Netbeans?
Почему вы должны зарегистрировать свой собственный поиск? – Aguid
Потому что он просматривается через статический вызов рамки в тестируемом коде. –