Я разрабатываю инструмент командной строки, который вызывает System.exit()
(не хочет использовать исключения вместо) на определенных входах.Scala: Как проверить методы, которые вызывают System.exit()?
Я знаком с Java: How to test methods that call System.exit()? и его самым элегантным approach.
К сожалению, это не достаточно чистым, благодаря мне пришлось добавить зависимости в system-rules, junit-interface
Есть ли общий шаблон для работы с System.exit
в specs2, который является более чистым, чем мой текущий подход, который не использовать specs2?
import org.junit.Rule;
import org.junit.Test;
import org.junit.contrib.java.lang.system.ExpectedSystemExit;
public class ConverterTest {
@Rule
public final ExpectedSystemExit exit = ExpectedSystemExit.none();
@Test
public void emptyArgs() {
exit.expectSystemExit();
Converter.main(new String[]{});
}
@Test
public void missingOutArgument() {
exit.expectSystemExitWithStatus(1);
Converter.main(new String[]{"--in", "src/test/resources/078.xml.gz"});
}
}
Проверьте https://groups.google.com/forum/#!topic/scalatest-users/pyKHtcP6HXM, где полезный ответ предлагает Билл Веннерс (автор ScalaTest). –