Tôi đã phát triển một công cụ dòng lệnh gọi System.exit()
(không muốn sử dụng ngoại lệ thay vì) trên một số đầu vào nhất định.Scala: Cách kiểm tra các phương thức gọi System.exit()?
Tôi quen thuộc với Java: How to test methods that call System.exit()? và thanh lịch nhất approach.
Thật không may, nó là không đủ tinh khiết, do tôi đã có thêm sự phụ thuộc vào system-rules, junit-interface
Có bất kỳ mô hình phổ biến để đối phó với System.exit
trong specs2 đó là trong sạch hơn cách tiếp cận hiện tại của tôi mà không sử dụng thông số kỹ thuật2?
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"});
}
}
Kiểm tra https://groups.google.com/forum/#!topic/scalatest-users/pyKHtcP6HXM, trong đó Bill Venners (tác giả của ScalaTest) cung cấp câu trả lời hữu ích. –