2012-09-02 19 views
1

我正在尝试JUnit规则:ExternalResource并没有看到与@Before和@After的区别。ExternalResource vs @之前/ @

@Rule 
public ExternalResource externalResource = new ExternalResource() { 

    @Override 
    protected void before() throws Throwable { 
     super.before(); 
     LOG.info("before"); 
     serverSocket = new ServerSocket(2004, 10); 
     socket = new Socket(); 
     socket.connect(serverSocket.getLocalSocketAddress()); 
    } 

    @Override 
    protected void after() { 
     super.after(); 
     LOG.info("after"); 
     try { 
      socket.close(); 
      serverSocket.close(); 
     } catch (IOException e) { 
      LOG.log(Level.SEVERE , "Error closing socket", e); 
     } 
    } 
}; 

这段代码的secuence是:

1. before (ExternalResource) 
2. before (@Before) 
3. after (@After) 
4. after (ExternalResource) 

什么是使用ExternalResource的优势是什么?

回答

4

您可以比共享前/后方法更容易地在多个测试类中重复使用ExternalResource实现。

相关问题