как использовать mockito, чтобы издеваться над методом в другой банке - PullRequest
0 голосов
/ 01 мая 2020

В моем проекте я использую какой-то внешний jar из другого проекта. Функция, которую я хочу протестировать, вызывает функцию из этого внешнего jar.

class MyClass {
    public String myfunc(String db, String schema, String table){
        return AnotherClass.getValue(db, schema, table);
    }
}

class AnotherClass {
    public static String getValue(String db, String schema, String table){
        ExternalClass ec = New ExternalClass();
        return ec.getValue(db, schema, table);
    }
}

Тест

private static final ExternalClass ec = Mockito.mock(ExternalClass.class);

@Before
public void setupTests() throws ClassificationException {
    Mockito.when(ec.getValue("db", "schema", "table")).thenReturn("dummyValue");
}


@Test
public void testEncryptStringColumn() {
    MyClass m = New MyClass();
    String out = m.myfunc("db", "schema", "table");
}

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

Ошибка В строке появляется сообщение об ошибке private static final ExternalClass ec = Mockito.mock(ExternalClass.class);

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Row
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.getDeclaredMethods(Class.java:1975)
    at org.powermock.api.mockito.repackaged.cglib.core.ReflectUtils.addAllMethods(ReflectUtils.java:350)

1 Ответ

0 голосов
/ 01 мая 2020

Похоже, вы пропустили poi-.jar в вашем классе. пожалуйста, добавьте его, и ошибка должна быть устранена:

Если вы используете maven, добавьте это в пом. xml

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version><your version></version>
</dependency>
...