Я пишу тесты JUnit для тестирования кода в другом пакете, который должен соответствовать заранее определенной спецификации. Тестируемый код должен содержать вложенный класс, который я хочу создать в тестовом пакете - невозможно импортировать этот класс, потому что он вложен (и поэтому не виден вне исходного пакета).
Например, структура пакета :
packageA
-> ClassA
-> packageA.ClassA$ClassB
tests
-> ClassATest
Мне нужно протестировать метод в ClassA, который принимает экземпляр ClassB в качестве аргумента.
В настоящее время я использую отражение, чтобы получить из ClassA
(что я могу импорт) до ClassB
[cls.getDeclaredClasses
]. Затем я могу получить конструктор для ClassB
[cls.getDeclaredConstructor
] и, таким образом, создать новый экземпляр ClassB
, используя найденный конструктор [constructor.newInstance
]. Этот вызов constructor.newInstance
возвращает Object
.
Как мне получить из возвращенного типа Object
что-то правильного типа ClassB
, чтобы я мог передать его в метод ClassA
под тестом?