如何对Java单例模式进行mock

如何对Java单例模式进行mock,第1张

public class HelloWorld {

    private static HelloWorld instance = new HelloWorld()

    private HelloWorld() {}

    public static HelloWorld getInstance() {return instance}

    public void say() {

        System.out.println("Hello World!")

    }

}

public class HelloWorld {

    private static HelloWorld instance = new HelloWorld()

    private HelloWorld() {}

    public static HelloWorld getInstance() {return instance}

    public void say() {

        System.out.println("Hello World!")

    }

}

测试代码:

public class HelloWorldAppTest {

    private HelloWorldApp helloWorldApp

    @Before

    public void setUp() throws Exception {

        helloWorldApp = new HelloWorldApp()

    }

    @Test

    public void sayHelloWorld() throws Exception {

        HelloWorld instanceMock = PowerMockito.mock(HelloWorld.class)

        Whitebox.setInternalState(HelloWorld.class, "instance", instanceMock)

        Mockito.doNothing().when(instanceMock).say()

        helloWorldApp.sayHelloWorld()

        Mockito.verify(instanceMock).say()

    }

}

测试挡板工具是用于进行软件测试的工具,常见的测试挡板工具包括:

1. Mockito:一个用于Java应用程序的开源测试框架,可以模拟对象并进行单元测试。

2. EasyMock:另一个用于Java应用程序的开源测试框架,可以模拟对象并进行单元测试。

3. PowerMock:一个用于Java应用程序的开源测试框架,可以模拟静态方法、构造函数和私有方法等。

4. JMockit:一个用于Java应用程序的开源测试框架,可以模拟对象和方法并进行单元测试。

5. WireMock:一个用于模拟HTTP服务的开源测试框架,可以模拟RESTful API并进行集成测试。

6. SoapUI:一个用于测试Web服务的开源测试框架,可以模拟SOAP和RESTful API并进行集成测试。

7. Selenium:一个用于Web应用程序的开源测试框架,可以模拟用户行为并进行自动化测试。

8. Appium:一个用于移动应用程序的开源测试框架,可以模拟用户行为并进行自动化测试。

总之,测试挡板工具可以帮助开发人员和测试人员进行软件测试,提高软件质量和稳定性。

在单元测试中,经常需要进行一些mock *** 作。现在已经有了一些比较不错的框架在做这些事情,比如:EasyMck,他在大多数情况下运行良好,但是对于某些结构的设计却显得无能为力。

EasyMock等众多的mock框架仅能mock一些public,non static or final的方法,在大多数情况下这并没有什么问题,他可以处理大多数的问题,但是当测试的代码包含了一些静态方法。

Cactus是一个基于JUnit框架的简单测试框架,用来单元测试服务端Java代码。Cactus框架的主要目标是能够单元测试服务端的使用Servlet对象的Java方法如HttpServletRequest,

都是单元测试的框架。例如你写了一个程序 在功能测试也就是整体测试前 想知道它的对错就可以借用这些工具写个单元测试案例 单独测试这个类 或者某部分程序对错


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11369201.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存