2014-02-20 30 views
0

如何在單元測試中向@AfterClass方法添加一些代碼,但不修改測試源代碼並通過junit cmd運行它。 這是我的嘗試,但它不覆蓋單元測試的@AfterClass。在Junit中向Afterclass添加代碼

import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.Request; 
import org.junit.AfterClass; 
import org.junit.After; 
import org.uni.DumpGenerator; 

public class SingleJUnitTestRunner { 
    public static void main(String... args) throws ClassNotFoundException { 
     String classAndMethod = args[0]; 
    Request request = Request.aClass(Class.forName(classAndMethod)); 
     Result result = new JUnitCore().run(request); 
    } 
    @AfterClass 
    public static void afterClass() throws Exception, InterruptedException { 
    System.gc(); 
    Thread.sleep(5000L); 
    DumpGenerator.dumpToFile("test", "afterRun"); 
    } 
} 

,然後我用這個CMD: java命令pathtojunit SingleJUnitTestRunner MYTEST

但這種方法課餘不起作用。 任何幫助! 在此先感謝。

回答

1

@AfterClass註釋適用於測試用例而不是測試運行器。您可以把它應用到你想運行的每個測試(或基類,對於這個問題),或者乾脆直接把它在你的main功能:

public static void main(String... args) throws Exception, ClassNotFoundException { 
    String classAndMethod = args[0]; 
    Request request = Request.aClass(Class.forName(classAndMethod)); 
    Result result = new JUnitCore().run(request); 
    afterClass(); 
} 
+0

這樣可以在不影響單元測試的方法,由@AfterClass註釋。 – Mohammad