对于junit / mocking对象,我需要一些指导。
我的课程包括一个计算器,用于确定要开始的工作数量。当我试图在计算器的模拟上设置期望时,我得到了一个Null Pointer Exception,所以我通过setUp方法中的setter将它注入到测试的类中。
@Before
public void setUp() throws Exception {
classUnderTest.setCalculator(mockCalc);
在我的测试中,我使用一些模拟数据在mockCalc上调用了预期的方法,如下所示:
List<Job> myConcurrentJobs = new ArrayList<Job>();
List<Job> jobs = new ArrayList<Job>();
myConcurrentJobs = Arrays.asList(mockWorkflowJob);
jobs = Arrays.asList(mockWorkflowJob);
result = Arrays.asList(mockWorkflowJob);
对方法的实际调用如下:
EasyMock.expect(mockcalc.calculateJobs(jobs, myConcurrentJobs,mockDS)).andReturn(1);
当我运行该方法时,返回的值为零,这否定了我的测试。这很可能是预期的,因为模拟列表不适合calculateJobs方法的逻辑,但模拟生活和现实生活之间的关系对我来说仍然不清楚。我试图在calculateJobs方法中设置断点,以确定是否/哪里的事情变坏但是它们没有在Eclipse中被击中,这可能是也可能不是由于注入。请协助。
答案 0 :(得分:0)
calculateJobs()方法的返回类型是什么。它是int(或其他原始类型)?任何模拟框架如何工作,当你期望一个方法具有某个参数时,如果在运行测试时,没有找到与你期望的匹配,那么返回返回类型的默认值。例如。如果你的返回类型是int,它将返回0,如果它的String / Object,它将返回null。
当你期望一个带参数的方法时,期望的参数和实际调用的参数必须是 EQUALS .From Equals,我的意思是,它将使用equals方法进行比较价值观的平等。所以如果你传递一个字符串&#34; SOMETHING&#34;并期望&#34; SOMETHING&#34;。
在你的方法中,你传递3个参数,即jobs,myConcurrentJobs,mockDS。确保你期待什么,实际上所谓的是满足&#34; EQUALS&#34;条件然后只返回1,否则返回类型的默认值将返回,即0(假设你有int返回类型)
请分享整个测试和实际代码,将能够完全帮助。