主课
public class BootSample {
public int call(int m) {
System.out.println("Entering into Call Method");
int n = m*10;
TestUtil testUtil = new TestUtil();
testUtil.add(m, n);
System.out.println("End of Call Method Value n : " + n);
return n;
}
}
工具类
public class TestUtil {
public void add(int a, int b) {
System.out.println(" Entering into TestUtil Method ");
int c = a +b;
System.out.println(" End of TestUtil Method Value : " + c);
}
}
考试班
@RunWith(MockitoJUnitRunner.class)
public class BootSampleTest {
@Mock
TestUtil testUtil;
@Before
public void setup() {
}
@Test
public void utilSuccess() throws Exception {
BootSample bootSample = new BootSample();
doNothing().when(testUtil).add(any(Integer.class),any(Integer.class));
int result = bootSample.call(10);
assertEquals(result,100);
}
}
输出:
Entering into Call Method
Entering into TestUtil Method
End of TestUtil Method Value : 110
End of Call Method Value n : 100
我试图嘲笑util无效的方法调用与do没什么,但不工作。有人能帮我解决吗?我在我们的应用程序中遇到了类似的功能。
可以用Mockito.anyInt()
代替Integer.class
,代码示例:
Mockito.doNothing().when(testUtil).add(Mockito.anyInt(),Mockito.anyInt());
如果您看到了TestUtil类中的System.out.printlns,那么它不会被嘲笑。看起来你错过了BootSample上的@InjectMocks,告诉Mockito将你模仿的TestUtil注入其中。
请参见此处文档中的示例:http://static.javadoc.io/org.mockito/mockito-core/2.13.0/org/mockito/InjectMocks.html
问题是您的call
方法负责创建一个TestUtil
对象,并且该对象不能被模拟。尝试添加TestUtil作为构造函数参数,如下所示:
public class BootSample {
private TestUtil testUtil;
public BootSample(TestUtil testUtil) {
this.testUtil = testUtil;
}
public int call(int m) {
System.out.println("Entering into Call Method");
int n = m*10;
testUtil.add(m, n);
System.out.println("End of Call Method Value n : " + n);
return n;
}
}
然后,您需要模拟TestUtil
类,并将模拟传递给BootSample
类:
BootSample bootSample = new BootSample(testUtil);
问题内容: 是否有一种方法可以使每次调用方法时都会被调用的“超级方法”,即使对于未定义的方法也是如此?有点像这样: 编辑- 细节:我有一个库,该库进行了很多更新,并且每次更新都变得晦涩难懂。为了简化我的工作流程,我正在使程序自动更新库(需要执行我想做的事情,我不会具体说明原因,但是我的程序可以与将来的更新一起使用)并且我有混淆映射与库一起下载时,我想制作一种例如称为的代理,然后在我调用它时,将获得
我的车型带有bean验证 汽车服务 } 当我从控制器Valid调用addCar时工作正常,但是当我从同一个服务类中的方法调用它时,它不验证汽车模型。 我从控制器调用addCars 这个怎么解决?我应该做些什么来使它工作呢?我必须对代码进行哪些更改?
问题内容: 我的应用程序中编码了几个方面。除以下内容外,其他所有功能均有效。 Service Interface Service Implementation Aspect 当我尝试执行该send方法时,调试点在方面没有受到影响perform。 更新 我做了一些调查,发现当从下面的方法中调用该方法时,这是行不通的 但是,如果我调用该方法,它将可以正常工作。但是,当Reply方法在内部调用send方
我在vue方法中启动Sweatrep时遇到问题。如果我直接在脚本中调用Sweatrep,但当我想在单击按钮时启动Sweatrep时不会发生任何事情(控制台中没有错误)。代码看起来 Vue(Vuetify) 这项工作 不行 我是新的Vue,所以也许错误很容易看到,但我不知道为什么没有工作。 所以问题是:为什么当我点击一个按钮时不能启动sweetalert模式?
问题内容: 我在一个教程中找到了这个示例。 当我运行此程序时,我的hs.size()值为2 ..,并且equals方法仅被调用一次。有人解释了我何时在HashSet中调用equal()方法 当上述程序中的equal方法调用时 问题答案: 您的代码将调用的唯一一次。另一次调用方法将是对的类。 此答案说明何时由和何时调用方法。摘录: HashSet利用哈希码来加快处理速度。假定彼此相等的两个对象将具有
问题内容: 当我创建自己的Android自定义类时,它就是本机类。然后,当我要重写基方法,我总是叫方法,就像我一直做的,等 我认为就是这样,因为从一开始,Android团队就建议我们始终调用每个方法重写。 但是,在 许多书籍中, 我可以看到比我自己更有经验的开发人员经常忽略调用,而且我真的怀疑他们是因为缺乏知识而这样做。例如,看看这个基本的SAX,其中解析器类中被省略,并且: 如果尝试通过Ecli