রায়স্টর্মের একটি ভাল উত্তর ছিল। আমিও নিয়মের কোনও বড় অনুরাগী নই। আমি অনুরূপ কিছু করি, কেবলমাত্র পাঠযোগ্যতা এবং ব্যবহারযোগ্যতার জন্য আমি নিম্নলিখিত ইউটিলিটি ক্লাসটি তৈরি করি, যা প্রথম স্থানে টীকাগুলির একটি বড় প্লাস।
এই ইউটিলিটি ক্লাস যুক্ত করুন:
import org.junit.Assert;
public abstract class ExpectedRuntimeExceptionAsserter {
private String expectedExceptionMessage;
public ExpectedRuntimeExceptionAsserter(String expectedExceptionMessage) {
this.expectedExceptionMessage = expectedExceptionMessage;
}
public final void run(){
try{
expectException();
Assert.fail(String.format("Expected a RuntimeException '%s'", expectedExceptionMessage));
} catch (RuntimeException e){
Assert.assertEquals("RuntimeException caught, but unexpected message", expectedExceptionMessage, e.getMessage());
}
}
protected abstract void expectException();
}
তারপরে আমার ইউনিট পরীক্ষার জন্য আমার কেবল কোডটি দরকার:
@Test
public void verifyAnonymousUserCantAccessPrivilegedResourceTest(){
new ExpectedRuntimeExceptionAsserter("anonymous user can't access privileged resource"){
@Override
protected void expectException() {
throw new RuntimeException("anonymous user can't access privileged resource");
}
}.run(); //passes test; expected exception is caught, and this @Test returns normally as "Passed"
}