ProtocolBuffer类被标记为final,大概是为了提高效率;然而,这使得它们很难用--Mockito进行测试。不能模拟/监视期末类(class)。我尝试使用PowerMockito但没有成功:在为测试准备final类时,我得到了一个ClassFormatError。到目前为止,我的解决方案是创建可模拟的适配器接口(interface),但我希望有一种不那么费力的方法。 最佳答案 JMockit可以处理final和static。只需注意如何设置它,因为它需要-javaagentJVM参数、类路径调整或额外注释才能模拟fina
是否有某种JDBC驱动程序可以简单地忽略数据库调用?为了开发,我正在将应用程序迁移到虚拟机。在这里,我只想处理GUI部分。但是应用程序向数据库发出了多个请求,这些请求甚至不允许应用程序启动。我现在不想更改应用程序代码,因为数据库耦合度很高。所以我在想可能有一个JDBC驱动程序,它只返回空的查询结果。 最佳答案 我决定自己编写一个简单的模拟驱动程序。这非常简单,并且做了我想要的。我可以通过配置文件切换应用程序的数据库驱动程序,这样我就可以让应用程序以一种简单的方式使用我的驱动程序。然后我扩展了驱动程序以返回它从CSV文件解析的数据。我
有时候,你想测试一个类方法,你想对父类(superclass)方法的调用做一个期望。我没有找到使用easymock或jmock在java中实现这种期望的方法(我认为这是不可能的)。有一个(相对)干净的解决方案,使用父类(superclass)方法逻辑创建委托(delegate),然后对其设置期望,但我不知道为什么以及何时使用该解决方案,有什么想法/示例吗?谢谢 最佳答案 好吧,如果你愿意,你可以。不知道大家是否熟悉JMockit,去看看吧。目前的版本是0.999.17,同时,我们来看看吧……假设有以下类层次结构:publicclas
我正在尝试为我正在处理的项目中的一些实用程序类设置单元测试,其中一个类(包含许可信息)有一种方法可以根据当前时间进行一些确定。即许可证包含到期日期,许可证字符串验证该日期,但查看许可证是否过期的实际逻辑是基于当前时间。publicbooleanisValid(){returnisLicenseStringValid()&&!isExpired();}publicbooleanisExpired(){Dateexpiry=getExpiryDate();if(expiry==null){returnfalse;}Datenow=newDate();returnnow.after(expi
几乎花了一整天的时间来解决这个问题。不管我使用什么样的测试/类/接口(interface),我都会得到几乎相同的异常。这是堆栈错误:java.lang.AbstractMethodError:org.powermock.api.mockito.internal.mockmaker.PowerMockMaker.isTypeMockable(Ljava/lang/Class;)Lorg/mockito/plugins/MockMaker$TypeMockability;atorg.mockito.internal.util.MockUtil.typeMockabilityOf(MockU
我正在尝试使用powermock测试一种方法。我还没有写任何测试用例。只是想为Mocking设置类(class)。这是我到目前为止所拥有的:@RunWith(PowerMockRunner.class)@PrepareForTest({ReadRubric.class})publicclassReadRubricTest{@BeforepublicvoidsetUp()throwsException{PowerMockito.mock(ReadRubric.class);}@AfterpublicvoidtearDown()throwsException{}@Testpublicvoi
在通常使用@Mock和@InjectMocks注释的模拟中,被测类应该使用@RunWith(MockitoJUnitRunner.class)。@RunWith(MockitoJUnitRunner.class)publicclassReportServiceImplTestMockito{@MockprivateTaskServicemockTaskService;@InjectMocksprivateReportServiceImplservice;//Sometests}但在某些示例中,我看到正在使用@RunWith(PowerMockRunner.class):@RunWith
我遇到了一个问题,但找不到优雅的解决方案。所以问题出在Selenium网络驱动程序的模拟上,我不知道应该如何测试/模拟void方法。publicvoidclickAndWait(Stringlocator){if(isElementPresent(locator)==false)throwsomeexception;selenium.clickAndWait();//aproblematicdelegatingcalltoselenium}所以我要问的是,如何正确测试这样的方法,一个测试是针对抛出的异常,但如何正确测试我委托(delegate)给的那个void方法?
我有一个类(ClassA)可以获取目录中的文件。它扫描给定目录以查找与正则表达式匹配的文件。对于每个匹配的文件,它将一个文件对象添加到列表中。一旦目录被处理,它将文件列表传递给另一个类(ClassB)进行处理我正在为ClassA编写单元测试,因此我使用Mockito模拟ClassB,并将其注入(inject)ClassA。然后我想在不同的场景中验证传递给ClassB的列表的内容(即我的模拟)我已将代码剥离为以下内容publicclassClassAimplementsRunnable{privatefinalClassBclassB;publicClassA(finalClassBcl
我正在使用Python模拟模块进行测试。我想监视事件对象进行的内部方法调用。我发现'wraps'kwarg可以用来设置一个模拟来监视对事件对象的方法调用:UsingPythonmocktospyoncallstoanexistingobject但这不适用于内部调用。我想用它来测试较高级别的方法是否以正确的顺序调用较低级别的方法。给定:classClassUnderTest(object):deflower_1(self):print'lower_1'deflower_2(self):print'lower_2'defhigher(self):self.lower_1()self.low