草庐IT

java - Mockito,测试依赖注入(inject)依赖项的对象(Spring)?

我是Mockito的新手,我正在尝试了解一种对依赖于注入(inject)的依赖项的类进行单元测试的方法。我想要做的是创建依赖项的模拟对象,并使我正在测试的类使用这些对象而不是Spring注入(inject)的常规注入(inject)依赖项。我一直在阅读教程,但对如何执行此操作有点困惑。我有一个我想像这样测试的类(class):packageorg.rd.server.beans;importorg.springframework.beans.factory.annotation.Autowired;publicclassTestBean1{@AutowiredprivateSubBea

java - Mockito中是否有类似于Junit Setup Method的东西

我有以下场景interfaceDAO{Stringa();Stringb();Stringc();}我创建了这个DAO接口(interface)的模拟,并将其提供给名为DAOProcess的东西。在DAOProcess中,我有各种调用DAO方法a、b和c的方法。现在每次我需要对DAOProcess中的方法进行单元测试时,我都会写成when(mockDAO.a()).thenReturn("test")。无论如何,我可以将这些when(mockDAO.a()).thenReturn("test")移动到所有测试用例吗? 最佳答案 如果

java - 有哪些方法可以测试依赖于静态方法的方法?

我需要测试一些依赖于SpringSecurity的安全相关类。此代码使用静态的SecurityContextHolder.getContext()。如何在不设置整个安全上下文的情况下测试调用方法?我们将JUnit4与Mockito结合使用。Mockito在它的常见问题解答中非常明确地指出不支持静态方法。有其他选择吗?SpringSecurity案例的答案会很好,但我正在寻找更普遍问题的解决方案。 最佳答案 看看PowerMock它将允许您模拟静态方法、构造函数并执行您通常无法使用Java执行的各种其他疯狂的事情。它集成了大多数模拟库

java - Mockito - 模拟具体类

给定以下代码:LinkedListlist=mock(LinkedList.class);doCallRealMethod().when(list).clear();list.clear();通过执行此测试,从LinkedList#clear的第一行抛出NullPointerException:publicvoidclear(){Entrye=header.next;while(e!=header){Entrynext=e.next;//Codeomitted.但是header之前已经实例化过:privatetransientEntryheader=newEntry(null,null

java - 静态方法的 doAnswer - PowerMock

我正在使用的静态方法之一,它做了两件事。它返回一些数据,但它也修改传递给它的参数对象。这个更新后的参数对象随后会在代码中使用。我正在使用PowerMock模拟返回行为。为了定义第二部分-更新输入参数,我正在定义doAnswer方法,但它不起作用。我尝试测试的方法如下所示。publicvoidlogin()throwsConnectionException,AsyncApiException{ConnectorConfigpartnerConfig=newConnectorConfig();//Thiscallsetsthevalueinonemembervariable'service

java - 有没有办法使用 EasyMock 部分模拟一个对象?

例如假设我有这门课:publicclassFooImplementsFooable{publicvoida(){//doessomestuffbar=b();//moarcoadz}publicBarb(){//blah}//...}我想测试Foo.a。我想模拟Foo.b,因为我正在单独测试该方法。我想象的是这样的:publicclassFooTestextendsTestCase{publicvoidtestA(){Fooablefoo=createPartialMock(Fooable.class,//likewithcreateMockFoo//classwherenon-moc

java - EasyMock:在 java 中模拟构造函数调用

我看过这个论坛上的类似问题,但没有一个能回答我的问题。这听起来很奇怪,但是否可以模拟出对您正在模拟的对象的构造函数调用。例子:classRealGuy{....publicvoidsomeMethod(Customercustomer){Customercustomer=newCustomer(145);}}classMyUnitTest(){publicCustomercustomerMock=createMock(Customer.class)publicvoidtest1(){//icaninjectthemockobject,butit'sstillcallingthecons

java - 我需要在单元测试中模拟 RabbitMQ

我在我的项目中使用RabbitMQ。我的消费者中有rabbitMQ客户端部分的代码,连接需要tls1.1才能连接到真正的MQ。我想在我的JUnit测试中测试这段代码,并模拟向我的消费者发送消息。我在google上看到几个使用不同工具的示例,camelrabbit或activeMQ如何使用,但此工具适用于amqp1.0,而rabbitMQ仅适用于amqp0.9。有人遇到过这个问题吗?谢谢!更新这是测试从队列接收json的代码。packagecom.foo.foo.queue;importjava.io.File;importjava.io.FileInputStream;importja

java - DAO 需要单独的接口(interface)和实现

我们有一个典型的n层java应用程序,我注意到我们的数据访问层具有FooDAO和FooDAOImpl类型的DAO。我一直在寻找证明这两者的必要性的理由,这是我的分析。如果您对同一个接口(interface)有多个实现,那么抽象是有帮助的。但是鉴于我们已经选择了用于DAOImpl的框架(比如iBATIS),是否真的需要它?帮助通过Spring进行代理。据我所知,具有接口(interface)的类可以很容易地被代理(走JdkProxy路线),而不是没有接口(interface)的类(选择cglib路线),并且一个具有要被代理的类的子类。子类化有它的问题,即要代理的类是最终类或没有默认构造函

java - 代码异味部分模拟?

为什么对“部分模拟”和需要它的代码有如此多的仇恨?这是一个(理论上的)示例实现:publicComplexResult1operationA(Stimulusa){{...result=...;}auditTheChange(a);}publicComplexResult2operationB(Stimulusb){{...result=...;}auditTheChange(b);returnresult;}voidauditTheChange(Stimulusstim){//doabunchofstufftorecordthechange//andinteractwithanoth