`
v7sky
  • 浏览: 74966 次
文章分类
社区版块
存档分类
最新评论

Maven项目引入JMockit

阅读更多
Maven项目中引入JMockit的步骤

1 创建一个标准的Maven工程,Pom中切记要选择 <packaging>war</packaging>  war或者jar均可,但是不能是pom,否则maven test命令只会 Building工程。这个是我搭建测试项目遇到的坑

2 引入JMockit依赖
<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <!--<scope>test</scope>-->
        </dependency>
        <dependency>
            <groupId>org.jmockit</groupId>
            <artifactId>jmockit</artifactId>
            <version>1.38</version>
            <!--<scope>runtime</scope>-->
        </dependency>


3 引入maven-surefire-plugin,否则Jmockit测试跑完后,并不会生成HTML测试覆盖率的报告
<plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.5.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
                <plugin>
                    <!-- 与maven test阶段绑定 -->
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.20</version>
                    <configuration>
                        <systemPropertyVariables>
                            <coverage-output>html</coverage-output>
                            <coverage-outputDir>target/coverage-report</coverage-outputDir>
                        </systemPropertyVariables>
                    </configuration>
                </plugin>
        </plugins>


这里要特别注意一点,maven test命令只会跑 src/test/java下测试类,命名规则如下:
默认包含的测试类:
**/*Test.java
**/Test*.java
**/*TestCase.java
默认排除的测试类:
**/Abstract*Test.java
**/Abstract*TestCase.java

4 举个列子:
@RunWith(JMockit.class)
public class TestJApp1_1 {

    @Tested
    Service testedService;

    @Injectable
    Dependency dependency;

    @Test
    public void exeUnitTest() {
        new Expectations() {{
            dependency.findSomeData(anyString);
            result = new Data("345");
        }};

        testedService.doSomething("...");
    }
}


该测试类放在src/test/java下
public class Service {

    private Dependency dependency;

    public Data doSomething(String someData) {

        Data data = dependency.findSomeData(someData);
        System.out.println(data.getText());
        return data;
    }

    public String fun() {
        return "call original method";
    }
}
public class Dependency {

    public Data findSomeData(String anyString) {
        System.out.println("Dependency -->"+anyString);
        log(anyString);
        return new Data(anyString);
    }

    private void log(String text){
        System.out.println("Dependency private log -->"+text);
    }
}
public class Data {
    private String text;

    public Data(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }
}

这个类放在src/main/java下。右键runas 或者maven test 都会生成测试报告,效果如下



  • 大小: 78.4 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics