java - 如何使用mockito模拟不同jar中的方法

标签 java mocking mockito

在我的项目中,我使用来自不同项目的一些外部 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 FinalExternalClass 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)

最佳答案

看起来您错过了类路径中的 poi-.jar。请添加它,错误应该得到解决:

如果您使用 maven,请将其添加到您的 pom.xml

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

关于java - 如何使用mockito模拟不同jar中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61544564/

相关文章:

java - Apache common SimplexSolver ObjectiveFunction 用于最大化矩阵中值的总和

java - 处理大量文件

java - 获取链式异常 Java 的详细消息

java - 来自 application.properties 的 Spring Boot 配置

python - 如何获取一个 Mock 对象的多个实例

mocking - 如何测试 SimpleJdbcCall

java - 如何模拟 Throwable 对象?

python - 如何在类的方法中模拟外部函数

android - 如何使用 Mockito.mockStatic 在 kotlin android 中模拟静态方法

java - 如何使用mockito测试匿名类中的方法调用