Tag: mockito

使用PowerMockito.whenNew()不会被模拟,并调用原始方法

我有一个如下所示的代码: Class A { public boolean myMethod(someargs) { MyQueryClass query = new MyQueryClass(); Long id = query.getNextId(); // some more code } } Class MyQueryClass { …. public Long getNextId() { //lot of DB code, execute some DB query return id; } } 现在我正在写一个A.myMethod(someargs)的testing。 我想跳过真正的方法query.getNextId() ,而是返回一个存根值。 基本上,我想嘲笑MyQueryClass 。 所以在我的testing案例中,我使用了: MyQueryClass query = PowerMockito.mock(MyQueryClass.class); PowerMockito.whenNew(MyQueryClass.class).withNoArguments().thenReturn(query); when(query.getNextId()).thenReturn(1000000L); […]

如何在Spring上下文中注入模拟

我有一个使用一些Spring上下文的testing。 在这些情况下,宣布了一些bean。 我希望testing使用上下文bean的实际实现,除了其中之一,我想要使用MOCK。 我试图使testingconfiguration组件(使用@Configuration注释),但XML似乎优先于@Bean注释,所以它不起作用,这样: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"context1.xml", "context2.xml", …}) @Configuration public class MyTest{ @Inject private MyTargetBean target; private AnotherBean myMock = mock(AnotherBean.class); @Bean public AnotherBean myMock() { return myMock; } ….. 我知道我可以在XML中定义Mocks,但为此我需要为每个testing添加一个额外的XML文件。 我想避免这种复杂性。 有没有办法在一个上下文中注入一个bean(像一个模拟),而不是通过XML? 谢谢!

Mockito:thenAnswer Vs然后返回

我正在使用Mockito进行unit testing。 我很困惑何时使用thenAnswer vs thenReturn 。 任何人都可以帮助我详细? 到目前为止,我已经尝试过,然后thenReturn 。

用Mockito调用callback

我有一些代码 service.doAction(request, Callback<Response> callback); 我如何使用Mockito抓取callback对象,并调用callback.reply(x)

Android上的Mockito + Dexmaker

我正在尝试在我的Android项目中使用Mockito。 我发现很好的教程,处理它: http : //www.paulbutcher.com/2012/05/mockito-on-android-step-by-step/ 基本上它使用Mockito + Dexmaker的新版本,一切按预期工作。 但是,当我试图嘲笑一些Android特定的对象,即: Context context = mock(Context.class); 我收到这个exception: java.lang.IllegalArgumentException: dexcache == null (and no default could be found; consider setting the 'dexmaker.dexcache' system property) at com.google.dexmaker.DexMaker.generateAndLoad(DexMaker.java:359) at com.google.dexmaker.stock.ProxyBuilder.buildProxyClass(ProxyBuilder.java:252) at com.google.dexmaker.mockito.DexmakerMockMaker.createMock(DexmakerMockMaker.java:54) at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:26) 任何想法如何解决它?

模拟或存根链接调用

protected int parseExpire(CacheContext ctx) throws AttributeDefineException { Method targetMethod = ctx.getTargetMethod(); CacheEnable cacheEnable = targetMethod.getAnnotation(CacheEnable.class); ExpireExpr cacheExpire = targetMethod.getAnnotation(ExpireExpr.class); // check for duplicate setting if (cacheEnable.expire() != CacheAttribute.DO_NOT_EXPIRE && cacheExpire != null) { throw new AttributeDefineException("expire are defined both in @CacheEnable and @ExpireExpr"); } // expire time defined in @CacheEnable or @ExpireExpr return cacheEnable.expire() != […]

如何在Mockito中模拟Spring中的自动assembly的@Value字段?

我使用Spring 3.1.4.RELEASE和Mockito 1.9.5。 在我的Spring类中,我有: @Value("#{myProps['default.url']}") private String defaultUrl; @Value("#{myProps['default.password']}") private String defaultrPassword; // … 从我目前设置的JUnittesting中, @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({ "classpath:test-context.xml" }) public class MyTest { 我想为我的“defaultUrl”字段嘲笑一个值。 请注意,我不想模拟其他字段的值 – 我想保留它们,只有“defaultUrl”字段。 另外请注意,在我的类中没有明确的“setter”方法(例如setDefaultUrl ),我不想为了testing目的而创build任何方法。 鉴于此,我怎样才能嘲笑这个领域的价值呢?

使用Mockito,我如何validation一个方法被调用了一定的参数?

我正在使用Mockito 1.9.0。 我将如何validation一个方法被调用一次,并传递给它的一个领域包含一定的价值? 在我的JUnittesting中,我有 @Before public void setupMainProg() { // Initialize m_orderSvc, m_opportunitySvc, m_myprojectOrgSvc … m_prog = new ProcessOrdersWorker(m_orderSvc, m_opportunitySvc, m_myprojectOrgSvc); } // setupMainProg @Test public void testItAll() throws GeneralSecurityException, IOException { m_prog.work(); } 方法“工作”调用“m_orderSvc”(传递到对象的参数之一)的方法。 “m_orderSvc”又包含一个成员字段“m_contractsDao”。 我想validation一下“m_contractsDao.save”被调用了一次,并且传递给它的参数包含一个特定的值。 这可能有点混乱。 让我知道如何澄清我的问题,我很乐意这样做。

在使用@Retention,@Transactional,@Inherited进行注释服务的testing之后,TestNGunit testing不起作用

我正在testing一个商业服务与TestNG,在春季启动应用程序的mockitounit testing。 应用程序是多模块弹簧引导项目。我正在为业务模块编写unit testing。 我已经在pom中添加了以下相关性testing, <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>${testng.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>el-api</artifactId> <version>${javaxel.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.servlet</artifactId> <version>${javax.servlet.version}</version> <scope>test</scope> </dependency> 我的包装注释看起来像 @Service @Transactional @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Inherited public […]

用Mockito作为参数来保存Class <T>的方法

有一个通用的方法需要一个类作为参数,我有问题与Mockito存根问题。 该方法如下所示: public <U extends Enum<U> & Error, T extends ServiceResponse<U>> T validate( Object target, Validator validator, Class<T> responseClass, Class<U> errorEnum); 至less对我来说,这太神奇了…我可以想象没有它的生活,但是其他的代码库很高兴地使用它… 我打算在unit testing中存根这个方法返回一个新的空对象。 但是我怎么用mockito来做这个? 我试过了: when(serviceValidatorStub.validate( any(), isA(UserCommentRequestValidator.class), UserCommentResponse.class, UserCommentError.class) ).thenReturn(new UserCommentResponse()); 但由于我混合和匹配匹配器和原始值,我得到“org.mockito.exceptions.misusing.InvalidUseOfMatchersException:无效的参数匹配使用!”