Консолидация результатов JUnit через SBT - PullRequest
0 голосов
/ 18 сентября 2018

Сначала немного предыстории: у меня есть удаленный Дженкинс, который выполняет некоторые тесты Ньюмана для моего веб-приложения, созданного с помощью PlayFramework. Результаты консолидируются в XML-файл и отображаются с помощью плагина «Анализ результатов теста» в Jenkins. Хорошо.

Теперь я хотел бы добавить несколько тестов JUnit в свое веб-приложение и, если это возможно, я хотел бы записать новые результаты в один и тот же XML-файл, чтобы увидеть все результаты в одном отчете.

В качестве первого шага я пытался запускать тесты JUnit локально и сохранять результаты в определенном файле. Я могу запустить свои тесты JUnit, но не могу сохранить результаты в файле XML.

Не могли бы вы помочь мне немного?

JUnit test:

import org.junit.Test;
import static junit.framework.TestCase.assertTrue;

public class Benchmark {

    @Test
    public void dummy() {
        assertTrue(1+1 == 2);
        System.out.println("Test has been done");
    }
}

Команда для запуска теста JUnit:

sbt clean compile test

Терминальный выход:

[success] Total time: 11 s, completed 18 sept. 2018 12:54:34
Test has been done

build.sbt:

name := """WebApp"""
organization := "com.organization"
version := "1.0-SNAPSHOT"

scalaVersion := "2.12.4"
sbtVersion := "1.1.1"

logLevel := Level.Warn

lazy val root = (project in file(".")).enablePlugins(PlayJava)

javaOptions ++= Seq("-Xmx3g", "-Xms3g")

libraryDependencies ++= Seq(
  ...,
  "junit" % "junit" % "4.12",
  "com.novocode" % "junit-interface" % "0.10" % "test"
)

В качестве второго шага я хотел бы заставить его работать на моем удаленном Jenkins. Если он работает локально, его легко сделать удаленным, но на всякий случай ниже моя конфигурация Jenkins для этапа сборки :

rm -r /var/lib/jenkins/workspace/WebApp/target/universal/*

cd /var/lib/jenkins/workspace/WebApp
sbt -J-Xmx3G -J-Xms3G dist

cd target/universal
unzip webapp-1.0-SNAPSHOT.zip

cd webapp-1.0-SNAPSHOT
chmod u+x bin/webapp

bash bin/webapp -Dhttp.port=9004 -J-Xms3g -J-Xmx3g &
sleep 10
newman run /home/tests/WebApp-Jenkins-Tests.postman_collection.json --reporters junit,cli --reporter-junit-export /var/lib/jenkins/workspace/WebApp/testResults/results.xml

1 Ответ

0 голосов
/ 18 сентября 2018

После некоторых испытаний я нашел решение.Вместо того, чтобы указывать вывод JUnit, я изменил вывод newman так, чтобы newman записывал результаты в ту же папку, что и Junit.

Конфигурация Jenkins:

cd /var/lib/jenkins/workspace/WebApp

sbt clean compile test

sbt -J-Xmx3G -J-Xms3G dist
cd target/universal
unzip webapp-1.0-SNAPSHOT.zip
cd webapp-1.0-SNAPSHOT
chmod u+x bin/webapp

bash bin/webapp -Dhttp.port=9004 -J-Xms3g -J-Xmx3g &
sleep 10
newman run /home/tests/Jenkins-Tests.postman_collection.json --reporters junit,cli --reporter-junit-export /var/lib/jenkins/workspace/WebApp/target/test-reports/newmanTests.xml

Кроме того, даже если я не знаю, помогает ли это, я обновил sbt до 1.2.3.Теперь это работает просто отлично:)

...