इस तरह मैं इसे करता हूं। मैं assertThrowsException नामक एक स्थैतिक विधि बनाता हूं जो तर्क के रूप में एक अपेक्षित अपवाद वर्ग और एक रननेबल के रूप में होता है जिसमें परीक्षण के तहत कोड होता है।
import junit.framework.Assert;
public SpecialAsserts {
public void assertThrowsException(final Class<? extends Exception> expected, final Runnable codeUnderTest) {
try {
codeUnderTest.run();
Assert.fail("Expecting exception but none was thrown.");
} catch(final Throwable result) {
if (!expected.isInstance(result)) {
Assert.fail("Exception was thrown was unexpected.");
}
}
}
}
यह (कि AndroidTestCase या उसके डेरिवेटिव में से एक प्रदान करता है) अपने परीक्षण वर्ग में विशेष ज़ोर उपयोग करने के लिए नमूना कोड है:
public void testShouldThrowInvalidParameterException() {
SpecialAsserts.assertThrowsException(InvalidParameterException.class, new Runnable() {
public void run() {
callFuncThatShouldThrow();
}
});
}
हाँ, वहाँ बहुत काम है, लेकिन यह बेहतर है जूनिट 4 को एंड्रॉइड पर पोर्ट करने से पहले।
एंड्रॉइड जूनिट के 3.x संस्करण का उपयोग कर रहा है, ऐसा लगता है कि कोई अन्य तरीका नहीं है - जूनिट 4 को शामिल करने और एंड्रॉइड जूनिट से इसे स्विच करने के अलावा। – Mark
मैंने अभी इसे जूनिट के साथ भाग लिया: 4.12 और यह पता लगाया कि अपवाद। एक्सपेक्ट मैसेज ("आइकन शून्य है, फ़ाइल नहीं है, या अस्तित्व में नहीं है।"); यदि अपेक्षित संदेश मेल नहीं खाता है तो परीक्षण में विफल नहीं होता है। – takesavy