насмешливый метод класса - PullRequest
0 голосов
/ 12 февраля 2019

Исключение при запуске 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 Ответ

0 голосов
/ 12 февраля 2019

NoClassDefFoundError - это ошибка, которая выдается, когда Java Runtime System пытается загрузить определение класса, и это определение класса больше не доступно.Требуемое определение класса присутствовало во время компиляции, но оно отсутствовало во время выполнения.

Проверьте конфигурацию регистратора и использованный вами jar.

тем временем вы можете указать отсутствующую зависимость для org.apache.logging.log4j.util.ReflectionUtil

измените версию log4j на 2.8.2, посмотрите, поможет ли это

// отредактированная версия

Я создал проект сприведенная ниже конфигурация для работы регистратора

build.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'
}

Создайте log4j2.properties файл в src / main / resources сниже приведены записи для отображения журналов в консоли

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");
    }

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