Tag: mockito

Mockito绕过静态方法进行测试

我需要使用Mockito测试handleIn()方法。 但是代码需要调用这个遗留代码Util.getContextPDO,这是一个静态方法。 请注意,在测试环境中,此Util.getContextPDO始终返回Exception,并且我打算通过始终返回虚拟IPDO来绕过此Util.getContextPDO()。 public class MyClass { public IPDO getIPDO() { return Util.getContextPDO(); // note that Util.getContextPDO() is a static, not mockable. } public String handleIn(Object input) throws Throwable { String result = “”; IPDO pdo = getIPDO(); // some important business logic. return result; } } 最初我认为这可以通过使用类“MyClass”的spy()来实现,所以我可以模拟getIPDO()的返回值。 以下是我最初使用spy()的努力 @Test public void testHandleIn() throws Exception […]

使用Mockito在JUnit中使用PowerMock和PowerRule获取javassist.NotFoundException

我已经将JUnit中的PowerMock和PowerRule与Mockito集成在一起。 这是我的依赖项: javassist javassist 3.12.0.GA asm asm 3.3.1 cglib cglib 2.2.2 org.powermoc powermock-module-junit4 1.4.12 test org.powermock powermock-api-mockito 1.4.12 test org.powermock powermock-module-junit4-rule 1.4.12 test org.powermock powermock-classloading-objenesis 1.4.12 test 我的测试类是: public class TestClass extends AbstractShiroTest{ @Rule public PowerMockRule rule = new PowerMockRule(); @Autowired SomeService someService; @Before public void setUp(){ Map newMap = new HashMap(); newMap.put(“userTimeZone”, “Asia/Calcutta”); Subject […]

参数匹配器的使用无效

下面的简单测试用例失败,但有例外。 org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 3 matchers expected, 2 recorded: 我不确定是什么问题 @Test public void testGetStringTest(){ final long testId = 1; String dlrBAC = null; NamedParameterJdbcTemplate jdbcTemplate = mock(NamedParameterJdbcTemplate.class); when(this.dao.getNamedParameterJdbcTemplate()).thenReturn(jdbcTemplate); when(jdbcTemplate.queryForObject(anyString(), any(SqlParameterSource.class), String.class )).thenReturn(“Test”); dlrBAC = dao.getStringTest(testId); assertNotNull(dlrBAC); }

Mockitoexception – when()需要一个必须是模拟方法调用的参数

我有一个非常简单的测试用例,它使用的是Mockito和Spring Test框架。 当我做 when(pcUserService.read(“1”)).thenReturn(pcUser); 我得到了这个例外。 org.mockito.exceptions.misusing.MissingMethodInvocationException: when() requires an argument which has to be ‘a method call on a mock’. For example: when(mock.getArticles()).thenReturn(articles); Also, this error might show up because: 1. you stub either of: final/private/equals()/hashCode() methods. Those methods *cannot* be stubbed/verified. 2. inside when() you don’t call method on mock but on some other […]

如何在Java Spring中模拟RestTemplate?

public class ServiceTest { @Mock RestTemplate restTemplate = new RestTemplate(); @InjectMocks Service service = new Service(); ResponseEntity responseEntity = mock(ResponseEntity.class); @Test public void test() throws Exception { Mockito.when(restTemplate.getForEntity( Mockito.anyString(), Matchers.any(Class.class) )) .thenReturn(responseEntity); boolean res = service.isEnabled(“something”); Assert.assertEquals(res, false); } 我试图测试一个包含restclient的服务的简单测试。 它看起来我没有成功模拟RestTemplate 。 它看起来像代码获得真实数据而不是模拟数据。 任何人都可以帮助我。 服务本身看起来像这样: public class Service{ public boolean isEnabled(String xxx) { RestTemplate restTemplate […]

使用mockito模拟嵌套方法调用

我有4个类让我们说A,B,C,D各自调用另一个类的方法。 现在我嘲笑了A类,想要使用mockito模拟一个方法 A a = Mockito.mock(A.class); 并希望在递归方法调用上得到“foo” a.getB().getC().getD()应返回”foo” 我试过了 当(a.getB()GETC()GETD()。)thenReturn( “foo” 的)。 但得到了nullPointerException 然后我试了 doReturn( “富”)时(a.getB()GETC()GETD()…)。; 然后我得到了org.mockito.exceptions.misusing.UnfinishedStubbingException: 我知道我可以创建B,C和D的对象,或者甚至可以写出类似的东西 B b = mock(B.class)或A.setB(new B()) 等等。 但我不能一次性做到这一点? 任何帮助,将不胜感激。

我应该使用哪些Maven工件导入PowerMock?

我需要将哪些jar子添加到我的pom.xml才能让PowerMock与Mockito合作? 我有以下依赖项: org.mockito mockito-all 1.9.0 test org.powermock powermock-api-mockito 1.4.11 test org.powermock powermock-api-support 1.4.11 test 但是当我在类级别添加@PrepareForTest注释时,Eclipse无法找到它,但它可以找到PowerMockito 。 我错过了什么jar子?

不鼓励在同一领域使用@ Spy和@InjectMocks吗?

在我正在进行的项目中,我经常看到@Spy和@InjectMocks在一个字段上一起使用。 但我从未在任何教程或其他资源中看到过这种方式。 我在谷歌搜索了这个特定的组合,但除了GitHub上的这个post之外没有找到任何其他内容: https : //github.com/mockito/mockito/issues/169 这让我觉得我们正在以一种奇怪的方式使用它。 注意:我认为同时使用两个注释的原因有时是因为如果你只使用@InjectMocks InjectMocks,Mockito尝试使用no-args构造函数来实例化类。 但是如果没有no-args构造@Spy并添加@Spy ,则可以使用该对象而无需空构造函数。 编辑:另一个重要用途是,如果只使用两个注释,则只能存根方法。

Mockito:如何匹配任何枚举参数

我有这样的方法声明 private Long doThings(MyEnum enum, Long otherParam); 这个枚举 public enum MyEnum{ VAL_A, VAL_B, VAL_C } 问题:如何模拟doThings()调用? 我无法匹配任何MyEnum 。 以下不起作用: Mockito.when(object.doThings(Matchers.any(), Matchers.anyLong())) .thenReturn(123L);

如何使用Powermock模拟void静态方法抛出exception?

我试图使用Powermock和Mockito来模拟一个void静态方法来抛出exception,如下所示。 但我遇到了一个问题。 除非我使用相同的参数对Adder.add()进行两次调用,否则不会抛出模拟的IOException 。 顺便说@RunWith(PowerMockRunner.class) ,我已经将@RunWith(PowerMockRunner.class)和@PrepareForTest(Adder.class)到unit testing类中。 class Adder{ public static void add(int i) throws IOException{ return; } } @Test public void testAdder() throws IOException{ PowerMockito.mockStatic(Adder.class); PowerMockito.doThrow(new IOException()).when(Adder.class); Adder.add(12); try { Adder.add(11); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } // assert things } 提前致谢。 🙂 答案如下。 在咨询http://code.google.com/p/powermock/issues/detail?id=278之后 ,实际上上面的Adder.add(12)是设置模拟静态方法的一部分。 这意味着在使用参数12调用Adder.add()时,将抛出IOException。 这很难理解,对吧? […]