美文网首页
IntelliJ + Maven + TestNG + Jaco

IntelliJ + Maven + TestNG + Jaco

作者: 科学Jia | 来源:发表于2017-08-25 16:07 被阅读1239次

第一次用IntelliJ大法,练手用Maven Projects+TestNG+Jacoco做了一个Demo.
第一步安装JDK和IntelliJ就不用多说了。
接下来创建一个JAVA的Maven Project


image.png

然后跟在myEclipse里面一样,新建一个package以及相关的类、方法和测试类,Demo总体最后大概是这样的。


image.png

下面讲下具体细节。
1、Maven仓库,有本地和中央仓库区别,如果没有设置本地仓库的配置,默认从中央仓库拉下来的文件会放在User下面的.m2下面,如果我们需要配置本地仓库到其他地址,我们需要在.m2下面创建一个setting.xml的文件进行本地仓库和中央仓库或者是有些公司有自己maven仓库的配置。我自己的做法是,网上下载了一个Maven的zip包,并把里面的setting.xml文件拷贝出来,重新设置了本地仓库的地址,并配置了中央仓库的地址。
怕我自己忘记,我把配置贴一下。。。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>D:/maven/repository</localRepository>

2、配置POM.xml文件,Demo里面主要配置TestNG和Jacoco;

<dependencies>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.9.8</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>src/test/source/testNG.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.7.7.201606060606</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>report</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
           <version>3.5.1</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>

其中,testNG.xml可以灵活配置测试集、测试类以及测试方法,testNG.xml路径配置需要注意,如果指定该文件位于工程根目录时,直接填写名字,其它位置要加上路径
例如,在我的demo里面,就是自己指定了testNG.xml的地址。

<suiteXmlFile>src/test/source/testNG.xml</suiteXmlFile>

3、Jacoco是一个用于统计代码覆盖情况的工具,同样在maven的POM中配置好。


image.png

上图是Maven Build Success以后的结果。Jacoco生成的代码覆盖报告一般在:/target/site/jacoco 文件下面,可以点击index文件可以查看,如下图。

image.png

4、跟myEclipse不同,intelliJ不能直接选择pom.xml --> Run as --> Maven Install, 它需要另外打开一个maven project来进行maven的操作。
这里安利一个好用的工具来熟悉IntelliJ,如图,Help --> Find Action,你可以搜索任何你可能想到的东西来使用IntelliJ。


例如,输入maven projects, 界面右边就会出现Maven Projects, 点击绿色+号可以看到pom.xml文件的路径。


image.png

可以同时选择Lifecycle下面clean(清除target文件里面以前生成的东西)、compile(编译)、install(打包到本地仓库),然后点击绿色表示Run的按钮达到在myEclipse执行你所选择maven各种命令的效果。

image.png

这里特别需要注意的是:
1、如果要用到Jacoco这个工具做代码覆盖统计,那么被统计的代码一定不能放在test路径下,并且一定是在测试代码完成以后,统计被测体代码所覆盖的分支情况;
2、Jacoco的Coverage Report生成是基于Jacoco.exec文件, 如果没有更新Jacoco.exec文件,那将不会有新的Report出现;在我的demo里,pom.xml配置的Report生成时间是Build成功以后,如果Maven install整个项目Build失败,是不会有新的Report产生,你看到target/site/jacoco路径下的index.xml文件也会是上一次生成的。
总之,Build失败,是不会有新的Report产生,如果产生了新的Report文件(index.xml),根据我这个Demo的配置,这个新的Report将会完全替换以前新的文件,而不是在此基础上的简单累加。
3、TestNG中用Assert可能会导致Build失败(例如,代码本身期望值和实际值不匹配),如果在允许代码可有有错的情况下,看到代码覆盖率的情况,那么就不要用到Assert断言,因为这个会导致Build失败,无法生成最新Coverage的报告(跟情况2一样)。所以,这里我能想到的是。。。算了,不告诉你。

相关文章

网友评论

      本文标题:IntelliJ + Maven + TestNG + Jaco

      本文链接:https://www.haomeiwen.com/subject/kurudxtx.html