为了账号安全,请及时绑定邮箱和手机立即绑定

类的模拟方法

类的模拟方法

汪汪一只猫 2022-06-15 14:41:24
运行junit时出现异常class JSONTool {    private static MipLogger logger = MipLogger.getLogger(MIPJsonTool.class);    public Object fetch(String url) {        return invokeEndPoint(url, 2000, new HashMap<String, String>());    }}我想测试这个类,下面是测试方法public void testFetchString() {    JSONTool mipJsonTool = new JSONTool();    JSONTool mipJsonTool1 = Mockito.spy(mipJsonTool);           Mockito.doReturn(new JSONObject()            .put("status", 200))            .when(mipJsonTool1)            .fetch("http://localhost:5000/author");    Object obj = mipJsonTool1.fetch("http://localhost:5000/author");    System.out.println("Done!");}运行junit给出以下异常java.lang.NoClassDefFoundError:  org/apache/logging/log4j/util/ReflectionUtil  Caused by: java.lang.ClassNotFoundException:  org.apache.logging.log4j.util.ReflectionUtil
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

NoClassDefFoundError是当 Java 运行时系统尝试加载类的定义并且该类定义不再可用时引发的错误。所需的类定义在编译时存在,但在运行时丢失。


检查记录器配置和您使用的 jar。


同时,您可以为 org.apache.logging.log4j.util.ReflectionUtil 提供缺少的依赖项


将 log4j 版本更改为 2.8.2 看看是否有帮助


//修改后的版本


我创建了一个具有以下配置的项目以使记录器工作


构建.gradle


/*

 * This file was generated by the Gradle 'init' task.

 *

 * This generated file contains a sample Java Library project to get you started.

 * For more details take a look at the Java Libraries chapter in the Gradle

 * user guide available at https://docs.gradle.org/5.0/userguide/java_library_plugin.html

 */


plugins {

    // Apply the java-library plugin to add support for Java Library

    id 'java-library'

}


repositories {

    // Use jcenter for resolving your dependencies.

    // You can declare any Maven/Ivy/file repository here.

    jcenter()

}


dependencies {

    // This dependency is exported to consumers, that is to say found on their compile classpath.

    api 'org.apache.commons:commons-math3:3.6.1'

    api 'org.apache.logging.log4j:log4j-web:2.8.2'


    // This dependency is used internally, and not exposed to consumers on their own compile classpath.

    implementation 'com.google.guava:guava:26.0-jre'



    // Use JUnit test framework

    testImplementation 'junit:junit:4.12'

}

在src/main/resources下创建一个log4j2.properties文件,其中包含以下条目以将日志显示到控制台


appender.console.type = Console

appender.console.name = STDOUT



rootLogger.level = debug

rootLogger.appenderRefs = stdout

rootLogger.appenderRef.stdout.ref = STDOUT

下面是调用记录器的 Java 代码(为了测试,我把它放在一个 main 方法中)


package GradleEclipseTestProject;


import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;


public class GradleLog4jTest {



    public static void main(String[] args) {

        System.out.println("Testing log4j dependencies");

        Logger logger = LogManager.getLogger();

        logger.info("This is a sample logger");

    }


}


查看完整回答
反对 回复 2022-06-15
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信