2017刚过

统计 1

先入为主准备好了“年度总结”的大佬们


好不容易等交机会

1.maven-surefire-plugin是独什么不好?

使您行了mvn test或者实行另外maven命令时走了测试用例,你就是曾经用过maven-surefire-plugin了。maven-surefire-plugin大凡maven里实行测试用例的插件,不显配置就会用默认配置。这个插件的surefire:test指令会默认绑定maven执行之test阶段。

maven的生命周期有怎样路?

[validate, initialize, generate-sources, process-sources,
generate-resources, process-resources, compile, process-classes,
generate-test-sources, process-test-sources, generate-test-resources,
process-test-resources, test-compile, process-test-classes,
test, prepare-package, package, pre-integration-test,
integration-test, post-integration-test, verify, install, deploy]


狂躁祭出大招

2.maven-surefire-plugin的使用

要是说maven已经生了maven-surefire-plugin的默认配置,我们尚闹必不可少了解maven-surefire-plugin的配置么?答案是必定的。虽说maven-surefire-plugin有默认配置,但是当得改部分测试执行的国策时,就有必不可少我们去重新配置这个插件了。

果然

2.1.配置JUnit

对年底数的来者不拒和要多还是少虚荣心的buff

2.1.1.插件自动匹配

最简易的布置方式尽管非配备或者是独声明插件。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
</plugin>

其一时maven-surefire-plugin会按照如下逻辑去搜寻JUnit的版本并尽测试用例。

if the JUnit version in the project >= 4.7 and the parallel attribute has ANY value
    use junit47 provider
if JUnit >= 4.0 is present
    use junit4 provider
else
    use junit3.8.1

年关账单以平等糟刷爆了情人围

2.1.2.插件手动匹配

自,如果你肯定用底是JUnit4.7及以上版本,可以肯定宣示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit47</artifactId>
            <version>2.19</version>
        </dependency>
    </dependencies>
</plugin>

JUnit4.0(含)到JUnit4.7(不含)的版本,这样声明:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit4</artifactId>
            <version>2.19</version>
        </dependency>
    </dependencies>
</plugin>

JUnit3.8(含)到JUnit4.0(不含有)的本,这样声明:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit3</artifactId>
            <version>2.19</version>
        </dependency>
    </dependencies>
</plugin>

JUnit3.8以下的版本surefire不支持。建议大家之所以时的JUnit版本,目前凡是4.12.

<dependencies>
    [...]
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    [...]        
</dependencies>

本文的例子我们所以之Junit4.12.

网易云音乐的秋听歌报告只有是一个有点热身

2.2.备测试用例

咱们今天备选一定量个近乎,一个被测试的切近,一个测试用例.目录结构如下

统计 2

本我们准备一个简短的类.

package com.qyf404.learn.maven;

public class App {
    public int add(int a, int b) {
        return a + b;
    }
    public int subtract(int a, int b) {
        return a - b;
    }
}

更创一个测试用例.

package com.qyf404.learn.maven;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class AppTest {
    private App app;
    @Before
    public void setUp() {
        app = new App();
    }
    @Test
    public void testAdd() throws InterruptedException {
        int a = 1;
        int b = 2;
        int result = app.add(a, b);
        Assert.assertEquals(a + b, result);
    }
    @Test
    public void testSubtract() throws InterruptedException {
        int a = 1;
        int b = 2;
        int result = app.subtract(a, b);
        Assert.assertEquals(a - b, result);
    }
    @After
    public void tearDown() throws Exception {
    }
}

只是简短地表现了公去年底听歌数据统计

2.3.为此maven执行测试用例

就此maven执行测试用例很简短,直接运行mvn test不怕可以.一般我们实施maven打包命令mvn package前maven会默认执行test命令.

qyfmac$ mvn test
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building learn-maven 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ learn-maven ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/qyfmac/git/learn-maven/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ learn-maven ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file to /Users/qyfmac/git/learn-maven/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ learn-maven ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/qyfmac/git/learn-maven/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ learn-maven ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 2 source files to /Users/qyfmac/git/learn-maven/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.19:test (default-test) @ learn-maven ---
[WARNING] The parameter forkMode is deprecated since version 2.14. Use forkCount and reuseForks instead.
[INFO] Surefire report directory: /Users/qyfmac/git/learn-maven/target/surefire-reports
[INFO] Using configured provider org.apache.maven.surefire.junit4.JUnit4Provider

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.qyf404.learn.maven.AppTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in com.qyf404.learn.maven.AppTest

Results :

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.622 s
[INFO] Finished at: 2015-12-01T11:36:04+08:00
[INFO] Final Memory: 14M/228M
[INFO] ------------------------------------------------------------------------
qyfmac$ 

实际我们见面发觉主要内容还是JUnit的物,maven只是当一个调用器调用了瞬间这些测试用例.

燃鹅

3.进阶

末尾让咱来研讨一下maven-surefire-plugin这插件更多的学识,这些大多数还是和配备相关的.

真的搅乱一池春水

3.1.超越了测试用例

在工作中,很多状下我们打包是勿思实行测试用例的,可能是测试用例不做到,或是测试用例会潜移默化数据库数据.跳了测试用例执行过程发生三独种植方法.

惹朋友围隐隐地震的

3.1.1.在configuration中声明

于插件的configuration配置中宣称跳了测试用例

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit47</artifactId>
            <version>2.19</version>
        </dependency>
    </dependencies>
    <configuration>
        <skipTests>true</skipTests>
    </configuration>
</plugin>

还得是支付宝是小biao砸

3.1.2.在properties中声明

以properties配置中声明跳了测试用例

<properties>
    <maven.test.skip>true</maven.test.skip>
</properties>

<properties>
    <skipTests>true</skipTests>
</properties>

仔细点看会发现

3.1.3.于执行命令中宣称

当尽maven命令时可声明跳了测试用例

qyfmac$ mvn test -Dmaven.test.skip=true

qyfmac$ mvn test -DskipTests=true

大家现在疼的不再是炫富啦

3.1.4.超过了测试用例优先级排序

首先划分点儿栽状况,一种植是布skipTests,一种是安排maven.test.skip(真要命,声明位置就是三远在了,还闹来片只变量名,一共就是5面临状态).

  • 设是部署skipTests,
    configuration的布置优先级最高,命令中得配置次之,
    properties的布最低.
  • configuration > 命令 > properties

  • 一旦是部署maven.test.skip,命令中得配置优先级最高,
    properties的配置最低.
    命令 > properties

  • skipTestsmaven.test.skip发一个深受设置成了true,则超过了测试用例.
    skipTests||maven.test.skip支配是否超越了测试用例执行.

神马一律年消费了几百万还是浮云!

3.2.maven命令执行一个测试用例

多多气象下我们刻画了一个测试用例后,想立马运行一下,看看执行情况.如果用IDE开发,里面一般都产生一直运行一个测试用例的方法.但是若就此maven命令达到平的意义,就待加些命令参数了.

按部就班我们本复加一个测试用例App2Test.java.

统计 3

package com.qyf404.learn.maven;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

@RunWith(JUnit4.class)
public class App2Test {
    private App app;
    @Before
    public void setUp() {
        app = new App();
    }
    @Test
    public void testAdd() throws InterruptedException {
        int a = 1;
        int b = 2;
        int result = app.add(a, b);
        Thread.currentThread().sleep(1000);
        Assert.assertEquals(a + b, result);
    }
    @After
    public void tearDown() throws Exception {
    }

}

直运行 mvn test是这般的,它实施了全测试用例.

qyfmac$ mvn test
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building learn-maven 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------

...

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.qyf404.learn.maven.App2Test
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.004 sec - in com.qyf404.learn.maven.App2Test
Running com.qyf404.learn.maven.AppTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in com.qyf404.learn.maven.AppTest

Results :

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.773 s
[INFO] Finished at: 2015-12-01T14:57:00+08:00
[INFO] Final Memory: 9M/156M
[INFO] ------------------------------------------------------------------------

本咱们因此命令mvn test -Dtest=App2Test指定执行App2Test.

qyfmac$ mvn test -Dtest=App2Test
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building learn-maven 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------

...

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.qyf404.learn.maven.App2Test
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.003 sec - in com.qyf404.learn.maven.App2Test

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.061 s
[INFO] Finished at: 2015-12-01T14:58:59+08:00
[INFO] Final Memory: 9M/156M
[INFO] ------------------------------------------------------------------------

-Dtest的参数是足以就此表达式的.

  • 本执行多单测试用例可以据此逗号分开
    mvn test -Dtest=App2Test,AppTest.

  • 为足以为此ant风格的门道表达式mvn test -Dtest=*2Test,mvn test -Dtest=???2Test.

  • 竟点名具体的测试方法mvn test -Dtest=*Test#testAdd.

  • 点名具体承保里之测试用例mvn test -Dtest=com/qyf404/learn/maven/*.

大家所欲罢不可知之

3.3.测试用例的带有与不同配置

上面说了,在执行命令时好指定执行哪个要怎样测试用例,其实当pom.xml里为是好安排的.
按照打包时实行测试用例AppTest,不执行App2Test,可以这么配置.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit47</artifactId>
            <version>2.19</version>
        </dependency>
    </dependencies>
    <configuration>
        <!--配置是否跳过测试用例执行-->
        <!--<skipTests>true</skipTests>-->
        <includes>
            <include>**/AppTest.java</include>
        </includes>
        <excludes>
            <exclude>**/App2Test.java</exclude>
        </excludes>
    </configuration>
</plugin>

<include><exclude>里的布方式与-Dtest背后的均等可以安排表达式:

  • 点名具体类<include>AppTest</include>.

  • 点名具体类<include>AppTest.java</include>.

  • 指定具体类<include>AppTest.class</include>.

  • 指定具体类<include>com/qyf404/learn/maven/AppTest.class</include>.

  • 指定具体类<include>com/qyf404/learn/maven/AppTest.class,App2Test</include>.

  • 叹号[!]表示否认<include>!*2Test.class</include>.

  • 利用ant风格的门路表达式<include>**/*Test</include>.

  • 采用ant风格的门道表达式<include>**/???Test</include>.

  • 重新复杂的%regex[expr]表达式<include>%regex[com.qyf404.learn.maven.*Test.class]</include>.

  • 重复扑朔迷离的%regex[expr]表达式<include>%regex[com.qyf404.*.*Test.class]</include>.

  • 重复复杂的%regex[expr]表达式<include>%regex[com.qyf404.[learn|test].*Test.class]</include>,中间的方括号表示要的定义,即learn或test的情况.

  • 又扑朔迷离的%regex[expr]表达式<include>!%regex[com.qyf404.*.*2Test.class]</include>,这个中的叹号表示否定,即含无切合该表达式的测试用例.

  • 还复杂的%regex[expr]表达式<include>%regex[.*2Test.class]</include>,这种安排方式忽略了保管前缀,可以知道成倒着相当全类名.

  • 重新复杂的%regex[expr]表达式里极其好永不闹问号[?],而且相当的是类似的全类名.

  • 无可以指定具体方法,这种安排是大错特错的`Test#testAdd`*.

  • 勿可以指定java文件在%regex[expr]里具体方法,这种安排是漏洞百出的`%regex[com.qyf404.learn.maven.Test.java]`*.

  • 比方同时配备了<include><exclude>,最终实施之测试用例是两岸的交集.

凡是支付宝通过蚂蚁智能帮手

3.4.分组执行测试用例

地方我们说了,可以安排<include>这些信息来决定实施怎样测试用例,但是JUnit里生个注解@Category得对测试用例组分组标记,而之所以maven执行测试用例时,我们啊得根据是注解的记号,来规定实施哪组测试用例.

以我们的测试用例是这般的:

package com.qyf404.learn.maven;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;


public class AppTest {
    private App app;
    @Before
    public void setUp() {
        app = new App();
    }
    @Test
    @Category(com.qyf404.learn.maven.FastTests.class)
    public void testAdd() throws InterruptedException {
        int a = 1;
        int b = 2;
        int result = app.add(a, b);
        System.out.println("---" + Thread.currentThread().getName());
        Assert.assertEquals(a + b, result);
    }
    @Test()
    @Category(com.qyf404.learn.maven.SlowTests.class)
    public void testSubtract() throws InterruptedException {
        int a = 1;
        int b = 2;
        int result = app.subtract(a, b);
        System.out.println("---" + Thread.currentThread().getName());
        Assert.assertEquals(a - b, result);
    }
    @After
    public void tearDown() throws Exception {
    }

}

pom.xml里如此配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <configuration>
        <groups>com.qyf404.learn.maven.SlowTests</groups>
    </configuration>
</plugin>

在执行mvn test时不时,则单纯实行标记@Category(com.qyf404.learn.maven.SlowTests.class)的测试用例.

啊大家仔细准备的2018年度重要词

3.5.若有测试执行破产则超越了任何测试

于包装时,默认情况会履总体测试用例,然后给有一个执的统计结果,如下所示:

Results :

Tests run: 3, Failures: 1, Errors: 0, Skipped: 0

多场面下我们盼望测试用例没有败的才能打包,如果出现打包失败,需要及时停下实施外测试用例.为满足是要求,我们需要追加部分部署设定.

<configuration>
    <skipAfterFailureCount>1</skipAfterFailureCount>
</configuration>

内部的数字1表示当有一个测试用例执行破产或来甚时,跳了累之任何测试用例.这个数字其实如果是一个浮零之累便可以.表达的意就是是当起N只测试用例执行破产或深时,跳了连续的别样测试用例.

尽管如此只是略的一个词

3.6.还运行失败的测试用例

当我们的一个测试用例测试的是一个远道服务,在好几情况下或者由环境问题(比如网络)导致测试用例执行破产,但眼看并无是先后问题.换句话说,当一个测试用例执行N次,有同等不善执行成功就觉着成功.这个时段咱们尽管用安排一个参数,运行履行破产的这用例重新执行.

<configuration>
    <rerunFailingTestsCount>2</rerunFailingTestsCount>
</configuration>

个中的数字2表示当有测试用例执行破产之后,还得还履行2次于,有一样坏实施成功便觉着测试用例执行成功.里面的2一经是一个不止零底整数就足以,表示重试次数.如果发生重试,在maven的尽报告中见面多一个Flakes.

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.qyf404.learn.maven.App2Test
Tests run: 3, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 3.023 sec <<< FAILURE! - in com.qyf404.learn.maven.App2Test
testAdd(com.qyf404.learn.maven.App2Test)  Time elapsed: 1.012 sec  <<< FAILURE!
java.lang.AssertionError: expected:<2> but was:<3>
        at com.qyf404.learn.maven.App2Test.testAdd(App2Test.java:32)

testAdd(com.qyf404.learn.maven.App2Test)  Time elapsed: 1.006 sec  <<< FAILURE!
java.lang.AssertionError: expected:<2> but was:<3>
        at com.qyf404.learn.maven.App2Test.testAdd(App2Test.java:32)

Running com.qyf404.learn.maven.AppTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in com.qyf404.learn.maven.AppTest

Results :

Flaked tests: 
com.qyf404.learn.maven.App2Test.testAdd(com.qyf404.learn.maven.App2Test)
  Run 1: App2Test.testAdd:32 expected:<2> but was:<3>
  Run 2: App2Test.testAdd:32 expected:<2> but was:<3>
  Run 3: PASS


Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Flakes: 1

每当走心的层面

3.7.Debugging Tests

貌似景象我们得当IDE中直接实施测试用例,有时候会起这种状态,IED中直接执行测试用例是不曾问题之,但是就此maven命令打包时即便实行破产了.我们得以当指令中加入-X--debug来打印还多之日记信息来排查问题.但也堪拉开JVM的调节端口来远程debug.

这就是说真的可谓字字暴击

3.7.1.盖调试模式执行maven命令

执行maven命令mvn -Dmaven.surefire.debug test因打开调试模式.当然也足以为此完的吩咐来指定端口

mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 -Xnoagent -Djava.compiler=NONE" test

命令执行后是是样子:

qyfmac$ mvn -Dmaven.surefire.debug test
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building learn-maven 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ learn-maven ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/qyfmac/git/learn-maven/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ learn-maven ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ learn-maven ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/qyfmac/git/learn-maven/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ learn-maven ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.19:test (default-test) @ learn-maven ---

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Listening for transport dt_socket at address: 5005

后面我们就算用基于这5005端口去启动本地源码了.

这些主要字还下放上略的走心解说

3.7.2.运用IDE远程调试

开班调试前要先配备IDE,我为idea为例说明如何配置.

  1. 每当右上比赛选择Edit Configurations....
    统计 4
  2. 于打开的对话框中选择左上角的加号,然后择Remote.
    统计 5
  3. 配备远程调试的参数,主要就是转个名与端口,其他的部署一般不欲修改.设定好后点保存.
    统计 6
  4. 于如debug得测试用例上安装一个断点.
    统计 7
  5. 分选刚刚设置好的配备启动远程调试.
    统计 8
  6. 开头debug你的先后吧.
    统计 9

世家的情怀正而请到了一致开上上签

3.8.连作执行测试用例

倘测试用例很多,而且并行执行时无会见相互影响,这时我们得以配备一个线程数来增速测试用例的履效率.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <configuration>
        <parallel>methods</parallel>
        <threadCount>10</threadCount>
    </configuration>
</plugin>

莫晒出怎么能反映当下上达成签的值?

3.9.翻测试报告

于执行了mvn test后,会在target目录下生成测试报告
统计 10一共两独文件,txt文件记录了汇总信息,xml文件里记录了测试用例执行的环境与实施情况,而且便于程序解析展现.

txt文件内容:

-------------------------------------------------------------------------------
Test set: com.qyf404.learn.maven.AppTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec - in com.qyf404.learn.maven.AppTest

xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" name="com.qyf404.learn.maven.AppTest" time="0.001" tests="1" errors="0" skipped="0" failures="0">
  <properties>
    <property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
    <property name="sun.boot.library.path" value="/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre/lib"/>
    <property name="java.vm.version" value="24.75-b04"/>
    <property name="gopherProxySet" value="false"/>
    ...
  </properties>
  <testcase name="testAdd" classname="com.qyf404.learn.maven.AppTest" time="0.001"/>
</testsuite>

不过呢

结语

形容了这般多,基本上把maven-surefire-plugin这个插件常用之都介绍了.但是maven-surefire-plugin未曾介绍的远较这些大多,看看它的布置起就明白了.

统计 11

再度加上依据测试结果呈现的测试报告就重新多矣.如果想进一步深切摸底得到官网学习.

示范代码github地址:
https://github.com/qyf404/learn-maven/tree/maven-surefire-plugin.

微博及为时有发生网友po了千篇一律布置

参考

  • http://maven.apache.org/surefire/maven-surefire-plugin

至于作者

pdf文件下充斥:http://pan.baidu.com/s/1c1corG8

这些重要词是怎么得出的着实预测基于

Emmmm…….

圈罢发了会心一笑:)

恶作剧也好

故恶整也好

不可否认的凡

尽管如此这些关键字分外走心

而实在是支付宝也每个人密切准备的

“人人都是”的上达成签

世家的活着阅历多少都见面略带相似之地方

据此这些重要字不为难引起共鸣。

到底,大家还是欣赏听好话的呗~

花钱会预测来年最主要词

办事怎么非克啊?

人工智能仅仅是简单地因你的数码来开分析

老是忽略了口乎主观的成分

职场生活要字

足自己来预测

赤裸面对自己

团结对友好举行自己剖析

或许,这才是无比“走心”的前瞻

描绘工作总的进程

实质上呢是一个重复梳理

意识价值点的长河

开辟T立方的工作汇报功能

手上习以为常是做年终总结的天天

描绘年终总结可以用T立方的

品类效益以及记功能加以扶持

于种类成效

扣押自己去年承办了哪些项目

拍卖了何等实际事情

与同事协调了什么内容

色基本讨论问题有安?

自笔记功能

关押自己过去同年记录了小工作经验

起分享状态的记

圈是那些有价的内容被分享

随后做一个再次完善又发出条的组成

小T随意列举了几乎单职场关键字

探访是否与您心所思的平等

2018而还是办公室的如出一辙阿哥一姐

理所当然也可以适当地于初手试试水

(一年基本类型>10个,在每个类别面临起至了统筹指挥的用意,年终矣,开始留心查看收到的工作汇报)

2018重加把劲

聊天地说爆发就是突发

(一年参与的类>5独,每个品种之任务都如期完成,同事的评论为无可非议,工作总写起得心应手)

意见犀利,观点独到

团队没你可怜!

(一年与的门类>5独,项目的主导讨论问题总能提出好犀利的简介,当然矣,写于工作总也无忘本在不足及展望被滔滔不绝)

初入职场,兢兢业业

潜力无限

(一年参与的型<5个,所承办的职责不多,但都能够如期完成,没有偏失,上级评价也比较好,喜欢收藏他人分享的记,喜欢念书)