我已经创建了一个包含控制器、服务和存储库层的基本Rest API。我现在正在尝试为通过产品ID查找产品的服务层方法编写一个单元测试。但是,当我运行测试时,它会在我试图模拟存储库findById()方法的行中抛出一个NullPointerException。
服务层中的getProductById()方法如下所示:
公共产品getProductById(String id){return ProductRepository.findById(id).orelse(null);}
我的服务层测试类:
package com.product.Services;
import com.product.Entities.Product;
import com.product.Repositories.ProductRepository;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
class ProductServiceTest {
@InjectMocks
ProductService productService;
@Mock
ProductRepository productRepository;
@Test
void getProductById() throws Exception {
Product product = new Product();
product.setId("001");
product.setName("TV");
product.setPrice(999.99);
when(productRepository.findById("001").orElse(null)).thenReturn(product);
assertEquals(product,productService.getProductById("001"));
}
}
问题是这里使用了两个不同版本的JUnit:org.JUnit.jupiter.api.test
来自JUnit5,而org.JUnit.runner.runwith
来自Junit4。
runwith
在Junit5中不再存在。
在本例中,我将使用JUnit4--即使用注释org.junit.test
(而不是org.junit.jupiter.api.test
)来注释测试。
谁能请解释我如何从控制器类模拟存储库。 在这个博客上发了这么多问题,但我没有得到任何回应。
现在,当调用“/comments/1”时,我得到了404个错误,所以数据rest没有公开我的存储库。主要问题是“如何模拟存储库方法从数据库中获取数据?” 我的测试类: 据我所知,使用MockBean注释我替换了当前的存储库bean并且它不会被数据rest公开,我们有没有办法将数据预填充到db或存储库方法的模拟调用?
问题内容: 我是Junit的新手,下面是我正在运行的junit代码。 这是我的API在ReportUtil中删除的HashedSettings 下面是我必须模拟的CollectionUtil中的createHashMap的代码。 这是我在运行junit测试用例时遇到的错误。 我正在使用嘲笑-all-1.10.19.jar,powermock-api-mockito-1.6.6.jar,powerm
我试图测试一个服务方法,但为了做到这一点,我必须模拟我的ReportRepository。除了对Include方法的调用使模拟返回为NULL外,其他操作都很好。 下面返回预期的报告: 但该服务实际上执行以下操作: 问题是,当我在模拟中包含'include'方法时,返回的是null而不是预期的报告,因此我的测试以:
我尝试使用以下代码模拟我的Runtime.getRuntime(): 但是我有以下错误:
本节介绍与JUnit Framework相关的各种模拟测试。 您可以在本地计算机上下载这些示例模拟测试,并在方便时离线解决。 每个模拟测试都提供一个模拟测试密钥,让您自己验证最终得分和评分。 JUnit Mock Test I 问题1 - 以下哪项描述正确测试? A - 测试是检查应用程序功能的过程,是否按照要求运行。 B - 测试是单个实体(类或方法)的测试。 C - 以上两者。 D - 以上都