草庐IT

java - 为什么 thenCallRealMethod() 在这里丢失参数?

我有以下代码:when(mockedOperation.getResult(anyDouble(),anyDouble())).thenCallRealMethod();when(mockedOperation.division(anyDouble(),not(eq(0d)))).thenCallRealMethod();其中Operation类似于Command模式-它封装了一些具体操作,在本例中为简化的-除法操作。结果检索不是直接发生的,而是通过契约方法发生的,比如getResult(arg1,arg2)。所以,我调用mockedOperation.division(10d,3d)

java - Mockito 和 HttpServletResponse - 将输出写入文本文件

我想使用mockito测试我的servlet。我也想知道服务器输出是什么。所以如果servlet写出这样的东西:HttpServletResponse.getWriter().println("xyz");我想改为将其写入文本文件。我为HttpServletResponse创建了模拟,并告诉Mockito如果调用HttpServletResponse.getWriter()它应该返回我的自定义PrintWriter:HttpServletResponseresp=mock(HttpServletResponse.class);PrintWriterwriter=newPrintWrit

Java Mock 对象,没有依赖注入(inject)

我对JUnit测试套件中的模拟对象很感兴趣,但是我只遇到过使用依赖注入(inject)来注入(inject)模拟对象的模拟框架。但是,我希望能够模拟类/函数而不必注入(inject)该模拟对象,就像python中的@patch()一样。简单的例子://dependencyinjectionpublicStringbar(Foofoo){returnfoo.foo();//justpassinmockFooobject}//....ontotestcodeFoomockedFoo=;Stringresponse=bar(mockedFoo);assertEqual(response,);

java - 如何在不调用原始方法本身的情况下在 mockito 中设置对模拟对象方法的调用

模拟版本:1.9.0我想在mockito中设置对模拟对象方法的调用,而不调用原始方法本身:编辑:此示例实际上按预期工作,即未执行的主体方法“test()”。然而,经过进一步调查,我注意到原始方法具有默认的可见性修饰符,我怀疑这会导致问题,因为在将其更改为public后(这不应该是一样的吗?!)它按预期工作。例如publicclassTestClass{publicStringtest(){System.out.println("testcalled!");return"test";}}//intestTestClassmock=mock(TestClass.class);when(mo

Java `final` 类和模拟

这个问题在这里已经有了答案:Howtomockafinalclasswithmockito(28个答案)关闭12个月前。我正在开发一款编程游戏,玩家可以访问抽象类并扩展它来控制机器人的行为。因为它是一个编程游戏,所以我正在努力保护我的游戏基础设施,这样玩家就不会弄乱游戏,而不仅仅是我给他们的类(class);为此,我将大部分类(class)设为final,但现在我无法在单元测试中模拟它们(mockito+testNG)。所以我想知道,我该如何解决这个问题?有没有办法让类非最终测试,然后以某种方式在构建周期的后期自动“final-ize”它们(我使用maven以防它与答案)。我不想添加另

java - Mockito - 模拟遗留类构造函数

我正在为一个通过构造函数引用遗留类的类编写JUnit。遗留类在第三方jar中,所以我无法重构它以使生活更轻松....这是被测试的类...publicMyClass{publicStringmethodToTest(Stringparam){LegacyClasslegacy=newLegacyClass(param);*.....etc........*}}这就是我在mockitoJUnit中尝试做的事情。publicMyClassTest{@TestpublicvoidtestMethodToTest()throwsException{LegacyClasslegacyMock=mo

java - SoapUI MockServices 返回 html 而不是 xml 响应

使用以下示例WSDL文件,我在SOAPUI(版本3.5)中生成了一个新项目,并创建了示例测试套件、测试用例和模拟服务。WSDLWSDLFileforHelloService我可以启动模拟服务并通过浏览器访问,由此我可以看到指向wsdl的链接并可以查看它。但是,通过使用默认生成的soap请求(如下),它返回一个html响应(看起来是网页)而不是我配置的soap响应。请求POSThttp://localhost:8088/SayHello/HTTP/1.1Accept-Encoding:gzip,deflateContent-Type:text/xml;charset=UTF-8SOAPA

java - 如何在对模拟的不同调用中返回不同的值?

我有以下代码,它从数据库中获取当前计数器值。然后它更新数据库中的计数器,然后再次检索值。intcurrent=DBUtil.getCurrentCount();DBUtil.updateCount(50);//itupdatesthecurrentcountbyadding50intlatest=DBUtil.getCurrentCount();我想以第一次调用应返回100而第二次调用应返回150的方式模拟静态方法。如何使用PowerMockito实现此目的?我正在使用TestNG、Mockito以及PowerMock。 最佳答案

java - 使用 Scanner 对用户输入进行 junit 测试

我必须测试一个类中的方法,该方法使用Scanner类接受输入。packagecom.math.calculator;importjava.util.Scanner;publicclassInputOutput{publicStringgetInput(){Scannersc=newScanner(System.in);returnsc.nextLine();}}我想使用JUnit对其进行测试,但不确定如何进行。我尝试使用以下代码,但它不会工作。packagecom.math.calculator;importorg.junit.Test;importstaticorg.junit.As

java - Mockito when().thenReturn() 不能正常工作

我有一个具有2个函数的A类:函数a()返回一个随机数。调用a()并返回返回值的函数b()。在测试中我写了这个:Atest=Mockito.mock(A.class)Mockito.when(test.a()).thenReturn(35)assertEquals(35,test.a())assertEquals(35,test.b())测试在第二个断言处失败。有谁知道为什么吗?要清楚-这不是我的真实代码,而是解释我的问题的简单代码 最佳答案 由于A类是模拟的,所有方法调用都不会转到实际对象。这就是你的第二个断言失败的原因(我猜它可能