java - 如何对私有类进行单元测试
问题描述
我们如何对私有类进行单元测试?
例如,带有限定符的私有类@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());
}
}
编辑:我的例子失败了:两次限定符类是私有的
解决方案
如果我 @Mock 界面,它就可以工作。
我想我必须@Mock 实现...
但是我不能编写私有类实现的测试。
推荐阅读
- java - 如何允许/限制 textview 在 Android Studio 中仅显示小数点后的一个数字
- javascript - 在 JavaScript 中批量处理大型 JSON 数据集并将其发布到服务器
- javascript - Angular 7:从服务发送响应消息
- c# - .NET SDK for Azure 中 Get-AzureRmResource 的 C# 等效项是什么?
- php - 如何在我的 yii2 项目中修复“调用数组上的成员函数 offset()”错误
- html - Mysql - 检查约束以限制 HTML 代码或只允许表格列中的数字、字母、空格和连字符
- sql-server - UNION SELECT、并行化和 IDENTITY
- sql - ms-access中的sql
- html - 如何在水平模式下在全屏 WebApp 中运行时擦除移动 Safari 中的状态栏?
- javascript - 从 http 响应正文中获取特定值