从多个maven junit测试输出执行生成统一报告

时间:2017-03-21 14:57:42

标签: maven logging junit reporting

我有一个参数化的junit测试套件,我使用maven运行,在Jenkins中使用以下命令:

export SUITECONF=SuiteConfig*

for f in src/test/resources/$SUITECONF ; \
do export SUITECONF=$(basename "$f" | cut -d. -f1) && \
mvn test -Dtest=TestSuite#testCase -q 2>/dev/null; \
done

扩展了“src / test / resources / SuiteConfig *”中的SuiteConfig *文件名,并且确实如下:

export SUITE_CONF=suiteconf1
mvn test -Dtest=TestSuite#testCase -q 2>/dev/null
export SUITE_CONF=suiteconf2
mvn test -Dtest=TestSuite#testCase -q 2>/dev/null
export SUITE_CONF=suiteconfN
mvn test -Dtest=TestSuite#testCase -q 2>/dev/null
...

但是具有执行输出的输出文件“target / surefire-reports / com.package.suites.TestSuite.txt”会被每个mvn命令覆盖,所以我需要一种方法让输出像如果所有测试都在同一次运行中执行。

我找到的快速解决方法是使用try / catch并将测试传递/失败打印到System.out,并且正在考虑使用Jenkins“Log Parser Plugin”解析输出。

    @Test
    public void testCase() {
        try {
            // Test config
            ...

            // Test data
            ...

            // Test case
            ... 

            System.out.println(operator + "#" + testName + " <<< TEST PASS");
        } catch (Exception e) {
            System.out.println(operator + "#" + testName + " <<< TEST FAILED");
            e.printStackTrace();
            throw (e);
        }
    }

但想知道是否有更好的方法来做这一切。也许我可以有一个输出:

TestConfig1#testCase1 <<< TEST PASS
TestConfig1#testCase2 <<< TEST PASS
TestConfig1#testCaseN <<< TEST PASS
TestConfig2#testCase1 <<< TEST PASS
TestConfig2#testCase2 <<< TEST PASS
TestConfig2#testCaseN <<< TEST PASS
TestConfigN#testCase1 <<< TEST FAILED
TestConfigN#testCase2 <<< TEST FAILED
TestConfigN#testCaseN <<< TEST FAILED

提前致谢

0 个答案:

没有答案