समवर्ती रूप से चलने से अप्रत्याशित परिणाम हो सकते हैं। उदाहरण के लिए, मैंने अभी पाया है कि जब मेरे टेस्ट सूट 200 परीक्षणों के साथ एक-एक करके निष्पादित होते हैं, तो यह समवर्ती निष्पादन के लिए विफल रहता है, मैंने इसे खोला और यह थ्रेड सुरक्षा समस्या नहीं थी, लेकिन एक परीक्षण के आधार पर एक परीक्षण, एक बुरी चीज है और मैं समस्या को हल कर सकता हूं।
Mycila work on JUnit ConcurrentJunitRunner and ConcurrentSuite बहुत दिलचस्प है। लेख नवीनतम जीए रिलीज की तुलना में थोड़ा पुराना प्रतीत होता है, मेरे उदाहरणों में मैं अद्यतन उपयोग दिखाऊंगा।
import com.mycila.junit.concurrent.ConcurrentJunitRunner;
import com.mycila.junit.concurrent.Concurrency;
@RunWith(ConcurrentJunitRunner.class)
@Concurrency(6)
public final class ATest {
...
तुम भी सभी परीक्षण कक्षाओं समवर्ती चला सकते हैं::
निम्नलिखित की तरह एक परीक्षण वर्ग टिप्पणी करना 6 के एक संगामिति स्तर के साथ समवर्ती परीक्षण तरीकों पर अमल करने, का कारण होगा
import com.mycila.junit.concurrent.ConcurrentSuiteRunner;
@RunWith(ConcurrentSuiteRunner.class)
@Suite.SuiteClasses({ATest.class, ATest2.class, ATest3.class})
public class MySuite {
}
Maven dependency है:
<dependency>
<groupId>com.mycila</groupId>
<artifactId>mycila-junit</artifactId>
<version>1.4.ga</version>
</dependency>
मैं वर्तमान में हूँ जांचें कि इस पैकेज के साथ कई बार विधियों को कैसे चलाया जाए और साथ ही साथ। यह पहले से ही संभव हो सकता है, अगर किसी के पास कोई उदाहरण है, तो मुझे अपने घर के समाधान के नीचे, मुझे बताएं।
@Test
public final void runConcurrentMethod() throws InterruptedException {
ExecutorService exec = Executors.newFixedThreadPool(16);
for (int i = 0; i < 10000; i++) {
exec.execute(new Runnable() {
@Override
public void run() {
concurrentMethod();
}
});
}
exec.shutdown();
exec.awaitTermination(50, TimeUnit.SECONDS);
}
private void concurrentMethod() {
//do and assert something
}
दूसरों के रूप में बताया गया है, सच है कि आप कभी नहीं जानते कि एक संगामिति बग ऊपर या नहीं दिखाना चाहते हो सकता है, लेकिन हजारों की दस, या के एक संगामिति के साथ हजारों फांसी के सौ, के साथ कह 16, सांख्यिकी है तुम्हारे पक्ष में।
+1 स्थिर कोड विश्लेषक के उपयोग का सुझाव देने के लिए। एक Google खोज कई संभावनाओं को प्रकट करती है [जावा समरूपता स्थिर विश्लेषण]। –
http://channel9.msdn.com/shows/Going+Deep/CHESS-An-Automated-Concurrency-Testing-Tool/ – inf3rno