JMockit Expectation API: как генерировать исключение при вызове метода/конструктора

При использовании JMockit я хочу создать исключение при вызове конструктора следующим образом:

new Expectations(){
        {
           new FirefoxDriver();//Want to throw IllegalStateException here but how?
        }
};

person Affan Hasan    schedule 11.03.2015    source источник


Ответы (2)


Чтобы указать результат для записанного ожидания, назначьте его (либо значения для возврата, либо исключения для выдачи) в поле result:

new Expectations() {{
    someMockedMethodOrConstructorInvocation(...); result = new IllegalStateException();
}};
person Rogério    schedule 11.03.2015
comment
Я пробовал выше; но вместо того, чтобы издеваться, он вызывает фактический конструктор и вместо этого создает объекты :( - person Affan Hasan; 16.03.2015
comment
Вы можете записать ожидание только для метода или конструктора, которые были смоделированы; обычно это означает, что вы объявляете фиктивное поле или фиктивный параметр, используя одну из фиктивных аннотаций, например @Mocked. В противном случае фактический метод или конструктор действительно будет выполнен. - person Rogério; 16.03.2015
comment
@Rogério: добавление фиктивного поля в ваш пример было бы неплохо. :-) Я думаю, что в случае с Аффаном должно быть просто new Expectations(FirefoxDriver.class) {{...}};, но я еще недостаточно уверен в JMockit... Может быть, добавить @Test(expected = IllegalStateException) в метод, а затем вызвать new FirefoxDriver(); после блока ожиданий? - person Amos M. Carpenter; 16.09.2016

мы должны добавить класс, который будет издеваться, в качестве параметров в методе тестового примера. И, используя результат, мы можем издеваться над результатом метода.

@Test
    public void testCase(@Mocked final ClassToMock classToMockObject){  

         new NonStrictExpectations() {
                {       
        classToMockObject.methodToMock();result=NullPointerException(); 
            }};

        classToMockObject.methodToMock(); //calling the method to throw exception
    }
person 13th Ghost    schedule 09.04.2015