运行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由以下原因引起:java。lang.ClassNotFoundException:org。阿帕奇。登录中。log4j。util。反射率直到
NoClassDefFoundError是Java运行时系统尝试加载类定义时引发的错误,并且该类定义不再可用。所需的类定义在编译时存在,但在运行时缺失。
检查记录器配置和已使用的jar。
同时,您可以为org.apache.logging.log4j.util.提供缺少的依赖项
将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。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");
}
}
以下是日志供参考: IllegalStateException:无法转换名为com.xyz.TestLoad的类。原因:java.io.ioException:无效常量类型:在org.powermock.core.classloader.mockClassLoader.loadModifiedClass(MockClassLoader.java:180)在org.powermock.core.cl
当我试图模仿javax.ws.rs.core 时,我得到一条错误消息: 无法创建JAX-RS运行时委托 为什么会发生这种情况? 但是,当我试图嘲笑HttpServlet响应时,这是没有问题的!
我提到了这个答案,我该如何模拟java。时间本地日期。now()关于如何模拟我的LocalDateTime。now()调用。我基本上遵循了所有步骤,但只使用了LocalDateTime而不是LocalDate。 我的代码的功能是这样的,它应该只在一小时的第15或45分钟运行。因此,我将LOCAL\u DATE\u TIME静态变量设置为: 然后在我的@Before测试方法中,我有以下内容: 这是2
我目前正在做一个小项目,作为Java测试课程的实习,我们试图看看mocking是如何工作的。 我们的目标是看到我们可以忽略我们所嘲笑的类中的错误。 正如您在Collaborateur中看到的,缺少一个“;”在System.Out之后,exercice的目标是表明嘲笑这个类可以让我们忽略这个错误。我的一些同事使用Eclipse时,使用“以JUnit形式运行”功能没有问题。 在Intellij中,我没
我试图在中模拟axios和。到目前为止,这是我的代码: 据我所知,这和文件里的一模一样 确切的例子: 并且我得到了 我错过了什么?