【发布时间】:2019-08-12 16:53:21
【问题描述】:
我创建了一个接口 Client 及其两个具体实现 clientA 和 clientB 并使用我的自定义注释对其进行注释。
public interface Client{
public void dosomething();
}
@Component
@Myannotation
public class clientA implements Client {
public void doSomething(){
sysout("Client A do something");
}
}
@Component
@Myannotation
public class clientB implements Client {
public void doSomething(){
sysout("Client B do something");
}
}
现在我从 Alien 类调用 clientA 和 clientB 的重写方法。
@Component
class Alien{
@Autowired
private ApplicationContext context;
public void performOperation(){
Map<String, Object> beans =
context.getBeansWithAnnotation(MyAnnotation.class);
for(Map.Entry<String, Object> entry: beans.entrySet()) {
Client c = (Client)entry.getValue();
c.doSomething();
}
}
}
我在为 performOperation 编写测试方法时遇到问题。
@RunWith(MockitoJUnitRunner.class)
class AlienTest
{
@InjectMocks
Alien a;
@Test
public void testperformOperation(){
//how to Mock for beans
assertEquals(expected, a.performOperation());
}
}
1)我应该如何编写testperformOperation方法(允许将performOperation方法的返回类型从void更改为任何其他类型)
2) 有没有更好的方法来获取客户端接口的所有实现列表,而无需创建自定义注释。
【问题讨论】:
标签: spring-boot mockito junit4