Как проверить пользовательский атрибут исключения во время выполнения, используя аннотации связанные параметры в Java - PullRequest
0 голосов
/ 07 октября 2018

Это моя структура класса

public class OrderRuntimeException extends RuntimeException
{
  private final Field field;

   public OrderManagementServiceRuntimeException(String messege, MyError myError)
  {
    super(messege);
    this.field = field;
  }

}

public Class MyError{

    String name;
    Sttring description;

    public MyError(String name, String description){

        this.name = name;
        this.description = description;
    } 
}

public void getOrders(Order order){
    .......
    throw new  OrderRuntimeException("Invalid Order",new MyError("Illegale","this is an illegal..."))
}

Я хочу проверить это исключение и объект типа MeError (имя и описание) с помощью Junit.Я написал это

public class MyTest {

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


@Test(expectedExceptions = OrderRuntimeException.class, expectedExceptionsMessageRegExp = "Invalid Order")
  public void testSetRequestTime_invalidRequestDTOImplType()
  {

    thrown.expect(......);

  }

}

Я использовал @Rule .. для получения функциональности thrown.expect ().Но я не смог получить объект типа MyError из этого теста.Пожалуйста, оставьте комментарий или ответ, если у кого-то есть идеи по поводу решения.

1 Ответ

0 голосов
/ 07 октября 2018

Я думаю, вы можете использовать org.hamcrest.Matchers, чтобы сделать этот тип утверждений.

expectedException.expect(OrderRuntimeException.class);
    expectedException.expect(org.hamcrest.Matchers.hasProperty("myError", allOf(
            org.hamcrest.Matchers.hasProperty("name", is("exampleName")),
            org.hamcrest.Matchers.hasProperty("description", is("exampleDescription"))
    )));
...