Классы и интерфейс jMock Mocking - PullRequest
3 голосов
/ 09 июня 2009

Я экспериментировал с jMock в качестве основы для моего проекта. Я попал в ситуацию, когда мне нужно издеваться над классом и интерфейсом. Я использовал ClassImposteriser.INSTANCE, чтобы инициировать самозванца контекста.

Предположим, класс Validator и интерфейс Person для имитации. Когда я собирался издеваться над интерфейсом Person, я столкнулся с проблемой NoClassFoundDefError. Когда я издевался над классом Validator, проблем не было.

Мне нужен и этот класс, и интерфейс, но я не могу решить проблему. Пожалуйста, ПОМОГИТЕ.

Пример кода:

Издевательство

private Mockery context = new JUnit4Mockery() {{ setImposteriser(ClassImposteriser.Class) }};

Класс:

private Validator validator;

Интерфейс:

private Person person;

Метод внутреннего тестирования

validator = context.Mock(Validator.class); ----> Рабочая

person = context.Mock(Person.class); ----> NoClassFoundDefError

1 Ответ

9 голосов
/ 20 июня 2009

Код, представленный вами, не будет компилироваться (это должен быть ClassImposteriser.INSTANCE). Пример кода ниже, кажется, работает нормально. Возможно, вы могли бы предоставить более подробную информацию?

public class Example {
    private Mockery context = new JUnit4Mockery() {
    {
        setImposteriser(ClassImposteriser.INSTANCE);
    }
    };

    @Test
    public void testStuff() {
    Validator validator = context.mock(Validator.class);
    Person person = context.mock(Person.class);

    // do some stuff...
    }

    public static interface Person {
    }

    public static class Validator {
    }
}
...