问题标签 [springmockito]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-boot - 如何在 Spring Boot 中对代码块进行单元测试
我在使用 junit 和 mockito 编写的 spring boot 中进行了单元测试。我的方法使用了将代码块作为输入并执行所需功能的方法。下面是代码示例。
此代码运行良好,但代码覆盖率非常低,因为代码块未执行。有什么方法可以执行代码块并增加覆盖率。
java - 如何在 Spring Boot 中使用 @ConfigurationProperties 模拟类
我有一个使用@ConfigurationProperties 自动连接另一个类的类。
带有@ConfigurationProperties 的类
Autowires 类 SomeProperties 之上的类
现在,我想测试SomeService类,在我的测试类中,当我模拟SomeProperties类时,我得到null
了所有属性的值。
测试班
如何模拟具有文件属性的SomePropertiesapplication-test.properties
。
mockito - PowerMockito 在定义第二个“when”子句时调用 Mocked Object 上的真实方法
当使用不同的参数调用方法时,我试图定义一些不同的模拟行为。不幸的是,我发现第二次尝试在(模拟)类上模拟给定方法时,它运行实际方法,导致异常,因为匹配器不是有效参数。任何人都知道我可以如何防止这种情况?
java - Mockito 不会使用“when()”模拟方法调用
我正在使用 SpringBoot 构建一个 REST Api。我有三个班级ProductController
,BackendService
和SquareService
。所有这些类都有一个名为 的方法postProduct(ProductRequestBody request)
,它根据我们正在谈论的确切方法返回不同的类型。因此,ProductController.postProduct(...)
调用BackendService.postProduct()
和BackendService.postProduct()
调用SquareService.postProduct()
,如下面的流程图所示:
这是Controller
看起来的样子:
你可以看到BackendService.postProduct()
上面的调用:
final BackendServiceResponseBody backendResponse = backendService.postProduct(request);
我已经成功地使用 Mockito 通过一个名为的类来模拟该调用ControllerPostTests
:
这个测试,连同一个更人为的测试,完美地工作,并且也通过了(耶!)。
现在,怎么样BackendService
?我也想模拟它SquareService
来调试它,而且我还必须模拟一个名为的类LiteRepository
,它实际上是一个JPARepository
:
让我感到困惑的是,在一个单独的测试文件中,我遵循了与我在.ProductControllerTests
SquareService.postProduct(...)
!我已经能够确定代码肯定会通过 IntelliJ 调试器进入该方法。这条线when(squareService.postProduct(request)).thenReturn(expected);
似乎不起作用。
我在这里做错了什么?
// 编辑:改进的图像。
spring - Mockito @Spy 在定义模拟行为时调用真实方法
我有一个由控制器和服务层组成的常见 Spring Boot 应用程序。不涉及数据库,因为我使用另一个 rest api 来存储数据。
现在我想要我的控制器,因此我想部分地模拟我的服务。部分原因是我有一种方法可以接受 dto 并将其转换为我的业务模型。我知道这也可以通过业务模型的构造函数来解决,但无论如何我遇到了以下问题:
代码
控制器
测试
在我的测试方法中,我定义:
问题:
我希望虽然在我的测试中没有定义 doSomething,但将 userDto 转换为 keycloak 表示是由原始方法完成的。当我在控制器中调试时,这似乎起作用,keycloakUserRepresentation 具有正确的值。问题是在下一步中
createNewUser
方法没有被存根/模拟。执行了原始方法,因此我的测试失败了。我想要的是,当我在我的测试用例中提供一个 doSomething 方法时,我希望原始方法被模拟。
springmockito - 如何在 mockito 中执行 catch 块以进行代码覆盖?
我要执行 catch 块以实现 90% 的声纳覆盖率。这是代码
我尝试了以下方法,
它抛出 invocationTget 异常而不是去那个 catch 块。在那个 innerMethod 中,一些 DB 连接带有 try-catch 块。
如何执行那个 catch 块?谁可以帮我这个事?
spring-boot - 如何对 Spring-Boot Application main() 方法进行单元测试以获取 Jacoco 测试覆盖率
如何使用 SpringApplication.run() 对 Spring-Boot Application main() 方法进行单元测试。我想知道是否有可能在这个类上获得 Jacoco 测试覆盖率。(否则我会排除它)
这个问题和这个问题类似,但又不一样:Spring Boot, test main application class
我正在使用mockito-core
3.8 和mockito-inline
.
该测试代码对我有用,但 Jacoco 没有将其作为测试覆盖率:
Jacoco 不能显示静态方法的覆盖范围吗?
spring-boot - JUnit5 中的 when(...).thenReturn(...) 哪个是 Mockito 的正确位置?测试本身或@BeforeClass/@BeforeEach 块?
任何人都可以解释我是否有区别:
和这个:
}
我明白,显然在第一种情况下 when(...).thenReturn() 将在每次测试之前运行,而在第二种情况下只会运行一次。但这是唯一的考虑吗?
此外,是否有必要让它运行不止一次?我应该在每种方法之后进行任何清理吗?
spring - Spring Boot - 无法模拟 MongoTemplate
我在要测试的服务中有一个方法,它使用MongoTemplate,如下所示:
然后我试图用 mongo 模板的模拟方法测试这个方法:
我已经阅读了这个问题,但是当我尝试标记为解决方案的答案时,它说 MongoTemplate 无法初始化。我更喜欢模拟这个而不是使用和嵌入数据库,因为我可以使用的库受到限制。
我的错误:
spring-boot - 使用 spring-retry 进行 SpringBoot 测试
我有以下功能(功能并不重要):
你可以想象它正在做一些 API 调用,返回一些对象的列表等。我可以很容易地在测试中模拟这个函数,如下所示:
但是在我在混合中引入(重试/恢复)之后,该模拟现在正在抛出
org.mockito.exceptions.misusing.NotAMockException at ...
. 知道为什么吗?
这是弹簧重试的代码:
代码有效,功能强大,只是测试的模拟现在被打破了。将不胜感激一些帮助