gpt4 book ai didi

java - 无法实例化 @InjectMocks 字段

转载 作者:行者123 更新时间:2023-12-02 09:39:31 25 4
gpt4 key购买 nike

我创建了一个包装器,用于通过 log4j 进行日志记录,扩展 HandlerInterceptorAdapter 并保持构建类型 maven 项目。我在我的 Spring Boot 应用程序中使用这个项目作为外部 JAR。在我的 Controller 中使用记录器。我已经为它编写了 JUnit,它工作正常,但在 mvn 安装期间出现异常。

DemoLogger 是一个公开函数以记录日志的接口(interface)。 DemoLogger 是 Maven 项目的一部分,它是一个外部 jar。

Controller

@RestController @RequestMapping("/api/v1")
public class DemoController {

private DemoLogger logger = LoggerFactory.createLog(DemoController.class);

@GetMapping("/demo")
public ResponseEntity<String> getString() {
logger.info("This is test debug");
return new ResponseEntity("Hello World", HttpStatus.OK);
}
}

JUnit

public class DemoControllerTest {

@InjectMocks private DemoController demoController;

@Before public void setup() {
MockitoAnnotations.initMocks(this);
}

@Test public void shouldReturnString()throws Exception {
final String body = demoController.getString().getBody().toString();
assertEquals("Hello World", body);
}
}

错误日志

Cannot instantiate @InjectMocks field named 'demoController' of type 'class dev.example.controller.DemoController'.
You haven't provided the instance at field declaration so I tried to construct the instance.
However the constructor or the initialization block threw an exception : dev/example2/logger/factory/LoggerFactory

at dev.example.controller.DemoControllerTest.setup(DemoControllerTest.java:18)
Caused by: java.lang.NoClassDefFoundError: dev/example2/logger/factory/LoggerFactory

最佳答案

这看起来更像是 Mockito 的 Maven 问题。

很可能您正在使用该 jar,而没有在 pom 中将其指定为依赖项。

它可以在您的本地 IDE 中运行,因为您很可能将其手动添加到类路径中。

尝试在本地 .m2 中安装该 jar(或者最好在您公司的 Nexus 或类似的东西上),然后运行构建:

mvn install:install-file

更多信息here .

关于java - 无法实例化 @InjectMocks 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57213973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com