在 JUnit 5 中测试公共方法时如何模拟私有方法

问题描述 投票:0回答:1

在 JUnit 5 中测试公共方法时如何模拟私有方法。

class School{
    @Autowired
    private SchoolRepo schoolRepo;

    private String getSchoolName(String name){
         return "New Name :"+schoolRepo.findByName(name);
    }
    
    public String getFullNameWithSchool(){
        String schoolName = getSchoolName("HMS");
        String fullName = "SK "+schoolName;
        return fullName;
    }
}

我想测试(使用 JUnit5)

getFullNameWithSchool
方法并模拟私有方法
getSchoolName
方法。

java spring-boot mockito junit5
1个回答
0
投票

前言:

您无法使用 JUnit 模拟私有方法。

您可以使用 PowerMock 来模拟它们。

解决方法是使用反射,但不建议这样做。

解决方案:

私有方法应该在公共方法中调用。然后你就可以测试公共方法,包括私有方法。

给出的示例:如果您有一个服务,请测试其公共方法。如果它的公共方法调用私有方法,它们也会自动测试。

© www.soinside.com 2019 - 2024. All rights reserved.