как макетировать класс в Java без создания интерфейса - PullRequest
0 голосов
/ 23 ноября 2018

Во-первых, я не Java-разработчик, я использую php.

Мне интересно в Java, например, если у меня есть такая структура:

interface Ainterface {
    public String method();
}

public class A implements Ainterface {
    public String method() {
       //do something
    }
}

public class B {
    public String method(Ainterface a) {
       a.method();
       //do something
    }
}

Теперь, если я хочучтобы проверить метод B, я могу смоделировать a

public class Amock implements Ainterface {
    public String method() {
       //do something
    }
}

и вставить его в метод B.

Но, если я не хочу создаватьинтерфейс и у меня такая ситуация:

public class A {
    public String method() {
       //do something
    }
}

public class B {
    public String method(A a) {
       a.method();
       //do something
    }
}

Есть ли способ высмеять a или проверить метод B другим способом?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018
Ответ * 1000000@m.antkowicz показывает правильный способ сделать это, используя фальшивый фреймворк.В комментариях, которые вы просили указать способ без использования внешней среды, поэтому этот ответ пытается решить эту проблему.

Так же, как вы создали Amock с помощью , реализуя Ainterface, вы можете создатьдочерний класс, который расширяет A.

Таким образом, у вас будет класс, подобный class AmockClassBased extends A, и тогда вы можете переопределить method(), чтобы он делал то, что выделали в Amock классе method().

Таким образом, ваш Amock будет изменен на: -

public class AmockClassBased extends A {

    @Override
    public String method() {
       //do something
    }
}

Затем вы можете передать экземпляр этого класса в Bх method(A a).

0 голосов
/ 23 ноября 2018

В Java вы можете использовать конкретную среду для имитации, такую ​​как Mockito , и использовать ее особый метод - например,

A aMock = Mockito.mock(A.class);

Конечно, таким образом вы можете создать только очень простой макет, который будетБуквально ничего не делать, кроме фреймворка, позволяет определить, какой конкретный метод должен возвращаться с предоставлением механизма when/thenПримером такого может быть

when(aMock.method()).thenReturn("I am just a fake");

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

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

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