Unit testing 用Mockito模拟私有方法
我想找一篇关于模仿私有方法的文章。实际上,我们在项目中使用mockito,但它的测试覆盖率太低了。所以我试着用Mockito和PowerMock写作,但是我找不到任何好的例子等等。有人能解释一下吗?我想这是PowerMock的工作。我怀疑莫基托能做到。并以此为例:Unit testing 用Mockito模拟私有方法,unit-testing,mockito,powermock,Unit Testing,Mockito,Powermock,我想找一篇关于模仿私有方法的文章。实际上,我们在项目中使用mockito,但它的测试覆盖率太低了。所以我试着用Mockito和PowerMock写作,但是我找不到任何好的例子等等。有人能解释一下吗?我想这是PowerMock的工作。我怀疑莫基托能做到。并以此为例: @Test public void testReplaceData() throws Exception { final String modifyDataMethodName = "modifyData";
@Test
public void testReplaceData() throws Exception {
final String modifyDataMethodName = "modifyData";
final byte[] expectedBinaryData = new byte[] { 42 };
final String expectedDataId = "id";
// Mock only the modifyData method
DataService tested = createPartialMock(DataService.class, modifyDataMethodName);
// Expect the private method call to "modifyData"
expectPrivate(tested, modifyDataMethodName, expectedDataId,
expectedBinaryData).andReturn(true);
replay(tested);
assertTrue(tested.replaceData(expectedDataId, expectedBinaryData));
verify(tested);
}
我认为这是PowerMock的工作。我怀疑莫基托能做到。并以此为例:
@Test
public void testReplaceData() throws Exception {
final String modifyDataMethodName = "modifyData";
final byte[] expectedBinaryData = new byte[] { 42 };
final String expectedDataId = "id";
// Mock only the modifyData method
DataService tested = createPartialMock(DataService.class, modifyDataMethodName);
// Expect the private method call to "modifyData"
expectPrivate(tested, modifyDataMethodName, expectedDataId,
expectedBinaryData).andReturn(true);
replay(tested);
assertTrue(tested.replaceData(expectedDataId, expectedBinaryData));
verify(tested);
}
为什么要模拟私有方法?这通常不是一个好主意。如果您认为需要模拟私有方法,这意味着您正在更改您试图测试的公共方法的行为。因此,很可能您没有编写有效的测试。你能发布一些你真正想要达到的目标的详细信息吗?也许有人能给你一些更有针对性的帮助或建议,告诉你测试中应该做些什么。但是模仿私有方法很少是类的良好测试的一部分;这就是Mockito不提供此功能的原因。为什么要模拟私有方法?这通常不是一个好主意。如果您认为需要模拟私有方法,这意味着您正在更改您试图测试的公共方法的行为。因此,很可能您没有编写有效的测试。你能发布一些你真正想要达到的目标的详细信息吗?也许有人能给你一些更有针对性的帮助或建议,告诉你测试中应该做些什么。但是模仿私有方法很少是类的良好测试的一部分;这就是Mockito不提供此功能的原因。