Хотя я думаю, что решение AdrianM является идеальным, вы также можете решить это с помощью насмешек.
Вариант 1: используйте фальшивый фреймворк, такой как PowerMock , который позволяет вам высмеивать статические методы, чтобы вы могли System.exit
ничего не делать.
Второй вариант: использовать внедрение зависимостей и любую фальшивую среду. Создайте этот интерфейс и реализуйте класс:
public interface SystemExit {
void exit(int code);
}
public class SystemExitImpl implements SystemExit {
public void exit(int code) {
System.exit(code);
}
}
Затем, сделайте класс, который содержит parseData
, примите SystemExit
в качестве параметра конструктора и сохраните его в переменной-члене (или используйте установщик для переменной-члена, который позволит вам установить его после построения). В вашем производственном коде передайте SystemExitImpl
. В своем тесте создайте макет для SystemExit
и передайте его вместо этого.