草庐IT

java - 使用 JMock 的类 <?> 类型参数的模拟方法

背景:这是一个JMock+JUnit特定问题(这是我必须使用的两种技术)。是的,我想做的事情可以用PowerMock来完成,但这是一个边缘案例,不需要更换工具。不,抱歉,我问这个问题不是为了辩论静态方法的哲学有效性:)除此之外,我真的要感谢任何看这个问题的人。问题:我有一段遗留代码需要为其编写测试(我们正在尝试围绕继承的代码进行测试,以确保我们在潜在的大规模重构工作中不会破坏任何东西......那是另一个故事了.)目标:我试图模拟的方法是下面类中的Foo.bar方法,它使用JMock的类冒名顶替者工具(通过JUnit4Mockery。)下面的代码是我正在测试包装的代码的代表:publi

java - 是否有任何工具使用 hamcrest Factory 注释?

我今天坐下来写一个匹配器,并决定快速浏览一下jmock文档以刷新我对该过程的内存,并注意到对org.hamcrest.Factory注释的引用。注释状态的文档。MarksaHamcreststaticfactorymethodsotoolsrecognisethem.Afactorymethodisanequivalenttoanamedconstructor.是否有任何工具实际使用此注释? 最佳答案 如theHamcresttutorial中所述,Factory注释被Hamcrest代码生成器org.hamcrest.genera

java - mockito 是否具有与 jMock 的状态等效的成语?

GrowingObjectOrientedSoftware一书在jMock中给出了几个示例,其中状态是显式的,而不是通过API公开它。我真的喜欢这个主意。有没有办法在Mockito中做到这一点?这是书中的一个例子publicclassSniperLauncherTest{privatefinalStatesauctionState=context.states("auctionstate").startsAs("notjoined");@TestpublicvoidaddsNewSniperToCollectorAndThenJoinsAuction(){finalStringitem

java - jmock 模拟静态方法

我的代码中有一个静态方法,我想以某种方式对其进行模拟。我正在使用jmock。我想我可以做到这一点的一种方法是在静态方法周围有一个“包装类”,并且mock这个,但我希望有一个更好的解决方案。我的做法不对?反馈:我打算拥有一个接口(interface)和类,其中包含一个只调用静态方法的方法。它允许我通过模拟对该包装类的调用来模拟逻辑。(我什至谈论它都觉得肮脏:)) 最佳答案 我们不支持在jMock中模拟静态方法,因为它不符合我们的设计方法。我们不喜欢对可能影响系统状态的重要特性使用静态方法。我们倾向于使用它们来支持OO代码并使其更具可读

java - 在 jMock 中捕获方法参数以传递给 stub 实现

我希望实现以下行为。我的被​​测类依赖于其他一些类,我希望用jMock模拟这种依赖性。大多数方法会返回一些标准值,但有一种方法,我希望调用stub实现,我知道我可以从will(...)调用此方法但我希望该方法由传递给模拟方法的完全相同的参数调用。测试@TestpublicvoidMyTest(){Mockerycontext=newMockery(){{setImposteriser(ClassImposteriser.INSTANCE);}};IDependencymockObject=context.mock(IDependency.class);Expectationsexp=n

java - 我可以模拟父类(super class)方法调用吗?

有时候,你想测试一个类方法,你想对父类(superclass)方法的调用做一个期望。我没有找到使用easymock或jmock在java中实现这种期望的方法(我认为这是不可能的)。有一个(相对)干净的解决方案,使用父类(superclass)方法逻辑创建委托(delegate),然后对其设置期望,但我不知道为什么以及何时使用该解决方案,有什么想法/示例吗?谢谢 最佳答案 好吧,如果你愿意,你可以。不知道大家是否熟悉JMockit,去看看吧。目前的版本是0.999.17,同时,我们来看看吧……假设有以下类层次结构:publicclas

java - 单元测试辅助方法?

我的类以前有大量方法,因此我将此方法的工作分割为“辅助”方法。这些辅助方法被声明为private以强制封装-但是我想对大型公共(public)方法进行单元测试。对辅助方法进行单元测试是否也很好,就好像其中一个方法失败调用它的公共(public)方法也会失败一样,这样我们就可以确定它失败的原因?此外,为了使用模拟对象测试它们,我需要将它们的可见性从私有(private)更改为protected,这是可取的吗? 最佳答案 一种方法是省略private并将测试放在同一个包中。然后测试可以调用内部方法,但其他人(=包外)不能。此外,失败的内

android - 在 Android 上使用 JMock

如何在Android上使用JMock?我有几个帖子说这是不可能的,但肯定有一些方法可以做到吗?问题似乎是让Android甚至识别JMockjar文件。那么也许有将jar放入Assets并制作自定义类加载器的解决方案?这看起来很麻烦,但听起来行得通吗? 最佳答案 我让JMock在Android开源测试项目中工作。是的:JMock代码在您手中的设备上执行;-)我用过:jmock-2.5.1.jar重新打包hamcrest-all-1.1.jar(我会解释)jmock-junit3-2.5.1.jar请参阅以下AndroidJMock测试

java - 关于 with(any(Class.class))) 与 JMock

使用JMock:context.checking(newExpectations(){{//OtheroneOf()will()statements...oneOf(shopAccount).enter(100,with(any(String.class)));will(returnValue(true));//OtheroneOf()will()statements...}});执行过程中会抛出以下异常:java.lang.IllegalArgumentException:notallparametersweregivenexplicitmatchers:eitherallparam

关于 java:jMock 模拟类和接口

jMockMockingClassesandInterface我正在尝试将jMock作为我项目的模拟框架。我遇到了一种情况,我需要同时模拟一个类和一个接口。我使用ClassImposteriser.INSTANCE来启动上下文的冒名顶替者。假设要模拟一个类Validator和一个接口Person。当我要模拟接口Person时,我遇到了一个问题NoClassFoundDefError。当我模拟类Validator时,没有问题。我需要那个类和接口,但我无法解决问题。请帮忙。代码示例:嘲讽privateMockerycontext=newJUnit4Mockery(){{setImposterise