首页 > 解决方案 > 如何对私有类进行单元测试

问题描述

我们如何对私有类进行单元测试?

例如,带有限定符的私有类@Autowired 的示例我想验证是否调用了良好的限定符

public class MyClass {
    @Autowired
    IHelloService helloService;

    public void sayHello(List<Person> list) {
        for(Person person : list) {
            helloService.sayHello(person);
        }
    }
}

.

@Primary
@Component
public class SayHelloService implements ISayHello {

    @Autowired
    @Qualifier("french")
    ISayHello french;
    @Autowired
    @Qualifier("english")
    ISayHello english;

    @Override
    public void sayHello(Person person) {
        switch (person.getLanguage) {
            case "EN":
                english.sayHello(Person person);
            break;
            case "FR":
                french.sayHello(Person person);
            break;
            default:
            break;
        }
    }
}

.

@Qualifier("french")
Component
class SayHelloFrenchService implements ISayHello {
    public void sayHello(Person person) {
        sysout("Bonjour " + person.getName());
    }
}

@Qualifier("english")
Component
class SayHelloFrenchService implements ISayHello {
    public void sayHello(Person person) {
        sysout("Hello " + person.getName());
    }
}

编辑:我的例子失败了:两次限定符类是私有的

标签: javatestingmockito

解决方案


如果我 @Mock 界面,它就可以工作。

我想我必须@Mock 实现...

但是我不能编写私有类实现的测试。


推荐阅读