В инструменте покрытия покрытие отображается как 0, однако модульное тестирование прошло, и я проверил в режиме отладки, что оно покрывает все операторы класса А.
Инструменты покрытия полагаются на манипулирование исполняемым байтовым кодом.
То же самое происходит с PowerMock, когда вы издеваетесь над статическим / новым.
Это может быстро привести к всевозможным проблемам. Для JaCoCo, кажется, есть решение вокруг автономного инструментария . Где, я также помню: какой-то другой человек спросил об этом некоторое время назад, и в конце концов сдался, потому что он также не мог заставить работать «автономные инструменты».
Для любой другой среды я должен повторить старый совет: подумайте о том, чтобы потратить свое время на то, чтобы научиться писать простой в тестировании код. Потому что, если вы сделаете это, вам не нужно будет использовать PowerMock (ito) для его проверки.
Ваш код сложно протестировать из-за этого оператора new()
в конструкторе. Просто не делай этого. Либо используйте внедрение зависимостей через @InjectMocks, либо используйте конструктор только для тестирования, который принимает требуемый объект.
Длинная история: когда вы пишете свой новый код и думаете, что вам нужен PowerMock для его проверки, вы делаете что-то не так.