java - 如何使用 Junit 和 Mockito 使用 spring 存储库测试 void 方法

标签 java junit mocking

我有一个调用 spring 数据存储库的 java spring 服务,我想使用mockito进行 Junit 测试,这是我的类和我想测试的服务:

@Service
public class DataServiceImpl implements DataService{

    @Autowired
    private CautionRepository cautionRepository;



        @Override
        public void addCautions(List<CautionsDTO> cautions, Contrat contrat) {

            if(cautions != null && !cautions.isEmpty()) {
                cautions.forEach(caution -> {

                        Caution caution = new Caution();

                        cautionContrat.setAmount(caution.getAmount());
                        cautionContrat.setDate(caution.getDate());

                        caution.setContrat(contrat);

                        cautionRepository.save(caution);
            });
            }
        }
    }

这是我的单元测试

@RunWith(SpringRunner.class)
public class DataServiceImplTest{

@InjectMocks
private DataServiceImpl dataService;

@Mock
private CautionRepository cautionRepository;

    @Test
    public void addListCautionsTest() {

        List<CautionsDTO> cautions = new ArrayList<>(); 
        ContratExportation contrat = new ContratExportation();

        Caution caution = new Caution();

         dataDelService.addCautions(cautions,contrat);

        Mockito.verify(cautionRepository, times(1)).save(caution);

    }
}

当我运行测试时,我收到以下错误:

Wanted but not invoked:
cautionRepository.save(
    org.model.Caution@2abe9173
);
-> at org.service.DataServiceImplTest.addListCautionsTest(DataServiceImplTest.java:292)
Actually, there were zero interactions with this mock.

你知道我的测试有什么问题吗

最佳答案

这应该是执行测试的正确代码

@RunWith(SpringRunner.class)
public class DataServiceImplTest{

@Autowired
private DataServiceImpl dataService;

@MockBean
private CautionRepository cautionRepository;

    @Test
    public void addListCautionsTest() {

        List<CautionsDTO> cautions = new ArrayList<>(); 
        ContratExportation contrat = new ContratExportation();

        Caution caution = new Caution();

         dataDelService.addCautions(cautions,contrat);

        Mockito.verify(cautionRepository, times(1)).save(caution);

    }
}

关于java - 如何使用 Junit 和 Mockito 使用 spring 存储库测试 void 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59841970/

相关文章:

hibernate - 一起运行时 Maven Spring 测试失败,但单独成功(ehcache 关闭,IllegalTransactionStateException)

java - Spring 参数化/理论 JUnit 测试

python - 如何测试我是否正确调用了 pickle.dump()?

java - 如何对 Spring Security @PreAuthorize(hasRole) 进行单元测试?

java - 如何在 hibernate 验证之前开始 Flyway 迁移?

java - Android Activity 在服务准备好之前访问服务的静态引用

java - 如何在不使用任何工具的情况下导出 SYBASE IQ/SYBASE ASE 中所有对象(如表、索引等)的 ddl?

java - 如何访问oracle 11g中的默认连接 'xe'来创建用户?

java - CalledFromWrongThreadException 在 Android 上执行 JUnit 测试

java - 如何模拟第 3 方代码的 protected 方法