hzdavid / jmockit.cn

JMockit中文网(jmockit.cn)上所有讲述的测试示例源代码
36 stars 15 forks source link

测试类中如何注入一个List的Field? #36

Open lewe518 opened 4 years ago

lewe518 commented 4 years ago

代码:

@Component
public class CandyHelper{
    @Autowired
    private List<CandyFilter> candyFilterList;
}

测试类

public class CandyHelperTest {
    @Tested
    private CandyHelper testInstance;
    @Injectable
    private List<CandyFilter> candyFilterList;
}

问题

使用Injectable时,会提示java.lang.IllegalArgumentException: java.util.List is not mockable;
不使用Injectable时会提示java.lang.IllegalStateException: Missing @Injectable for field "java.util.List candyFilterList" in CandyHelper

请问这种情况应该如何mock?

guhanjie commented 2 years ago

这种情况可以用@Tested进行修饰,并给该List字段进行初始化,然后就可以自动注入了。 代码例如:

public class CandyHelperTest {
    @Tested
    private CandyHelper testInstance;
    @Tested
    private List<CandyFilter> candyFilterList = new ArrayList<>();
}