当前位置: 移动技术网 > IT编程>开发语言>Java > TestNG的静态方法mock的步骤

TestNG的静态方法mock的步骤

2019年07月21日  | 移动技术网IT编程  | 我要评论

jquery 教程,上菱洗衣机,神兵侠侣

最近团队内部对程序中使用大量的静态方法,而公司要求要有sonar扫描覆盖率的,因为在大量使用静态方法的地方若不mock,则覆盖率达不到。于是网上很少的文章讲解对静态方法的mock,大多都是如何使用powermockjunit,一般对于privatepublic方法正常逻辑是有文章讲解,那么今天我就把静态方法覆盖的方式梳理了一下。避免每个人过来都来问口口相传,形成文档。

在test方法中需要用到timeutil.java中的静态方法。示例mock操作如下:

1.添加maven配置依赖

     <!-- 单元测试mock -->
     <dependency>
         <groupid>org.mockito</groupid>
         <artifactid>mockito-all</artifactid>
         <scope>test</scope>
     </dependency>
     <dependency>
         <groupid>org.powermock</groupid>
         <artifactid>powermock-core</artifactid>
         <scope>test</scope>
     </dependency>
     <dependency>
         <groupid>org.powermock</groupid>
         <artifactid>powermock-api-mockito</artifactid>
         <scope>test</scope>
     </dependency>
     <dependency>
         <groupid>org.powermock</groupid>
         <artifactid>powermock-module-testng</artifactid>
         <scope>test</scope>
     </dependency>
    
     <dependency>
         <groupid>org.testng</groupid>
         <artifactid>testng</artifactid>
         <scope>test</scope>
     </dependency>
     <!-- 单元测试 -->

2.在test类添加以下注解

    @suppressstaticinitializationfor("com.yuesf.utils.timeutil")
    @powermockignore("java.lang.*")
    @preparefortest(value = timeutil.class)
    public class saleorderbizimpltest {
    }   

3.test类中添加以下方法

  @objectfactory
    public iobjectfactory getobjectfactory() {
        return new org.powermock.modules.testng.powermockobjectfactory();
    }
@beforeclass(alwaysrun = true)
    public void setup()  {
        mockitoannotations.initmocks(this);
}

4.在测试方法添加以下注解

    @preparefortest(timeutil.class)

示例

    @preparefortest(timeutil.class)
    @test
    public void processorderitemlabel() {
    }

验证结果:
eshuph.png

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网