Lưu ý: Tôi đang sử dụng JUnit 4.11 và Netty 3.6.5.JUnit và Netty khiến đơn đăng ký kết thúc sớm
Tôi đang thử nghiệm một số chức năng cơ bản trong ứng dụng máy chủ phức tạp của mình. Tôi chỉ muốn trích xuất chức năng mạng và thực hiện một số kiểm tra đơn vị. Tuy nhiên, khi tôi cố gắng tạo một bài kiểm tra đơn vị, ứng dụng chỉ đơn giản là thoát. Tuy nhiên, nếu tôi đặt một dummy public static void main
, nó hoạt động chính xác, nhưng bên ngoài của JUnit, rõ ràng. Đây là sscce:
public class SimpleNetwork {
private Injector inj;
@Before
public void startInjector() {
Module mod = new AbstractModule() {
@Override
protected void configure() {
// Guice stuff you don't need to see, it works fine
}
};
inj = Guice.createInjector(mod);
}
// **When I run this using JUnit, the application ends immediately.**
@Test
public void testNetwork() {
NioServer server = inj.getInstance(NioServer.class);
server.run();
// **This prints in both scenarios**
System.out.println("Hello World");
}
// **When I run this, the application works as expected.**
public static void main(String[] args) {
SimpleNetwork sn = new SimpleNetwork();
sn.startInjector();
sn.testNetwork();
}
}
Bạn có thể gỡ lỗi vào NioServer không? – fge
@fge Có, phương thức 'run' có lỗi' println' xảy ra – durron597
Netty stuff là * không đồng bộ *, runner thử không đợi các luồng khác kết thúc, bạn phải sắp xếp nó trong phương thức thử nghiệm của mình. –