बहु-थ्रेड वातावरण में JUnit का उपयोग करते समय मैं एक बुरी समस्या से मिलती हूं। निम्नलिखित कोड विफल होना चाहिए, लेकिन यह वास्तव में ग्रहण में गुजरता है।बहु-थ्रेड वातावरण में JUnit का उपयोग करके अजीब समस्या
public class ExampleTest extends TestCase {
private ExecutorService executor = Executors.newFixedThreadPool(10);
private volatile boolean isDone = false;
public void test() throws InterruptedException, ExecutionException {
executor.submit(new Runnable() {
@Override
public void run() {
try {
fail();
} finally {
isDone = true;
}
}
});
while (!isDone) {
Thread.sleep(1000);
}
}
}
और here'a एक और कोड, यहाँ मैं उपयोग Future.get() इस मामले में यह असफल हो जायेगी में, धागा बंद के लिए इंतजार करना।
public class ExampleTest extends TestCase {
private ExecutorService executor = Executors.newFixedThreadPool(10);
private volatile boolean isDone = false;
public void test() throws InterruptedException, ExecutionException {
Future future=executor.submit(new Runnable() {
@Override
public void run() {
try {
fail();
} finally {
isDone = true;
}
}
});
future.get();
}
}
मैं इसे googled और पाया कि JUnit एकाधिक-धागा इकाई परीक्षण नहीं संभाल सकता है, लेकिन क्या कोड के इन दो टुकड़ों के बीच मतभेद है? धन्यवाद
तो वहाँ किसी भी है इस मामले में जुनीट के लिए प्रतिस्थापन? – zjffdu