Написать тестовый пример JUnit для специально проверенного исключения в Java?

Я пишу тестовый пример для моего класса, в котором есть методы, которые выдают исключения (как проверенные, так и во время выполнения). Я пробовал различные возможные способы тестирования, как предлагается в этой ссылке., Похоже, они работают только для исключений времени выполнения. для проверенных исключений мне нужно сделать try / catch / assert, как показано в коде ниже. Есть ли альтернативы попробовать / catch / assert /. вы заметите, что testmethod2() and testmethod2_1() показывает ошибку компиляции, но testmethod2_2() не показывает ошибку компиляции, которая использует try / catch.

class MyException extends Exception {

    public MyException(String message){
        super(message);
    }
}


public class UsualStuff {

    public void method1(int i) throws IllegalArgumentException{
        if (i<0)
           throw new IllegalArgumentException("value cannot be negative");
        System.out.println("The positive value is " + i );
    }

    public void method2(int i) throws MyException {
        if (i<10)
            throw new MyException("value is less than 10");
        System.out.println("The value is "+ i);
    }

    }

Тестовый класс:

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;


public class UsualStuffTest {

    private UsualStuff u;

    @Before
    public void setUp() throws Exception {
        u = new UsualStuff();
    }

    @Rule
    public ExpectedException exception = ExpectedException.none();

    @Test(expected = IllegalArgumentException.class)
    public void testMethod1() {
        u.method1(-1);
    }

    @Test(expected = MyException.class)
    public void testMethod2() {
        u.method2(9);
    }

    @Test
    public void testMethod2_1(){
        exception.expect(MyException.class);
        u.method2(3);
    }

    public void testMethod2_3(){
        try {
            u.method2(5);
        } catch (MyException e) {
            assertEquals(e.getMessage(), "value is less than 10") ;
        }
    }
}

1 ответ

Решение
@Test(expected = MyException.class)
public void testMethod2() throws MyException {
    u.method2(9);
}
Другие вопросы по тегам