Как переопределить поведение класса в тесте JUnit - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь создать тесты JUnit для метода в классе A, который создает экземпляр класса B. Так как, я хочу изолировать поведение метода, я хотел бы переопределить методы B в моем наборе тестов для A с более простымте, которые будут работать в целях тестирования A.

Я пытался сделать это, используя шпион Mockito, однако, насколько я понимаю, это позволяет только возвращать статическое значение при вызове метода, однако мне нужно заменить сложныйвнешняя логика с более простой, с учетом переданных параметров.

Как лучше всего подойти к этому?

1 Ответ

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

Если я правильно понял, пример кода может выглядеть следующим образом:

public class A {
    public T doSth(){
       String result = new B().callMethod();
    }
}

. Чтобы сделать тестирование более удобным, следующий подход может быть полезен, если вы можете изменить исходный код.

public class A {
    private MyInterface b;
    public A(MyInterface b){
      this.b = b;
    }
    public T doSth(){
       String result = b.callMethod();
    }
}
  1. Представьте интерфейс, который реализует класс B
  2. . Убедитесь, что класс A зависит только от интерфейса, введя экземпляр B через метод установки или конструктор
  3. прямо сейчасвы можете использовать макет Mockito для настройки значений результатов или просто использовать тестовую заглушку (внутренний класс, который реализует интерфейс и необходимую вам логику)

Cheers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...