2016-01-12 198 views
1

我的問題有很多類似的問題,但沒有明確的答案! 我的測試失敗了,因爲它們在套件內運行一次,一次只能運行一次。我需要他們在套房內只運行一次。 這是我的套房:防止運行兩次junit測試

@RunWith(Suite.class) 
@Suite.SuiteClasses({Test1.class, Test2.class}) 
{ 
..... 
} 

我運行命令行測試使用命令test

有沒有人找到解決方案?

+0

你使用maven運行測試 –

+0

沒有。激活劑測試 – Soof

+2

雖然是的,但兩次運行可能很煩人/慢,他們**不能失敗**。如果只運行一次是成功運行的要求,那麼運行兩次的測試結構 – blgt

回答

0

我用下面的配置運行使用JUnit,平行試驗,他們只運行一次:

@RunWith(ParallelSuite.class) 
@SuiteClasses({ Test1.class, Test2.class }) 
public class AllTests { 

} 

而且我有一個ParallelSuite.class:

package tests; 

import java.util.concurrent.ExecutorService; 
import java.util.concurrent.Executors; 
import java.util.concurrent.TimeUnit; 

import org.junit.internal.runners.*; 
import org.junit.runners.Suite; 
import org.junit.runners.model.InitializationError; 
import org.junit.runners.model.RunnerBuilder; 
import org.junit.runners.model.RunnerScheduler; 

public class ParallelSuite extends Suite { 
    public ParallelSuite(Class<?> klass, RunnerBuilder builder) throws InitializationError { 

     super(klass, builder); 

     setScheduler(new RunnerScheduler() { 

      private final ExecutorService service = Executors.newFixedThreadPool(4); 

      public void schedule(Runnable childStatement) { 
       service.submit(childStatement); 
      } 

      public void finished() { 
       try { 
        service.shutdown(); 
        service.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); 
       } catch (InterruptedException e) { 
        e.printStackTrace(System.err); 
       } 
      } 
     }); 
    } 
} 
+0

我試了一下。但沒有工作!同樣的事情發生! – Soof