JUnit के प्रयोगात्मक ParallelComputer धावक से प्रेरित होकर मैं अपने खुद के ParallelSuite और ParallelParameterized धावकों का निर्माण किया है। इन धावकों का उपयोग करके आप परीक्षण सूट और पैरामीटर परीक्षणों को आसानी से समानांतर कर सकते हैं।
ParallelSuite.java
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);
}
}
});
}
}
ParallelParameterized।जावा
public class ParallelParameterized extends Parameterized {
public ParallelParameterized(Class<?> arg0) throws Throwable {
super(arg0);
setScheduler(new RunnerScheduler() {
private final ExecutorService service = Executors.newFixedThreadPool(8);
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);
}
}
});
}
}
उपयोग सरल है। बस @RunWith इन समानांतर * कक्षाओं में से एक को एनोटेशन मान बदलें।
@RunWith(ParallelSuite.class)
@SuiteClasses({ATest.class, BTest.class, CTest.class})
public class ABCSuite {}
स्रोत
2013-05-25 14:46:57
लिंक किया गया पृष्ठ कहता है "अधिकांश दोहरे-कोर समाधानों के लिए, समानांतर धागे के साथ चलना वर्तमान में गैर-थ्रेडेड चलाने से कभी भी तेज नहीं है"। क्या ये अब भी एक मामला है? – Raedwald
मुझे लगता है कि यदि आपके परीक्षण किसी भी आईओ करते हैं तो वे अभी भी लाभान्वित होंगे। उदाहरण के लिए, यदि आपका यूनिट परीक्षण एकीकरण परीक्षणों की तरह अधिक है और डेटाबेस को हिट करता है, तो समानांतर में चलने से उन्हें तेज करना चाहिए। – Dave
@ रेडवाल्ड अपेक्षा नहीं करता कि * गैर * आईओ-बाध्य यूनिट परीक्षणों के लिए भी बहुत कुछ है जो मैं कहने की कोशिश कर रहा हूं। पोस्टफायर के नए संस्करण पोस्ट में वर्णित 2.5 से भी बेहतर/अधिक कुशल हैं, इसलिए आपको थोड़ा बेहतर परिणाम मिल सकते हैं। – krosenvold