2017-09-06 2 views
0

Ich versuche, Google-Test in einem Batch-Skript ausführen, um die Tests in Jenkins und während die Tests alle bestanden, Jenkins Job-Status ist FAILURE.Jenkins Job Fehler mit Google-Test PASSIERT

hier ist der Ansatz Ich verwende:

@echo off 
setlocal ENABLEDELAYEDEXPANSION 

call "C:\Program Files (x86)\Maxim Integrated\eclipse\eclipsec.exe" --launcher.suppressErrors -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import ".\Loader" -data ./ -cleanBuild "Loader/UnitTest" && (
call .\Loader\UnitTest\Loader.exe 
echo Loader status = !ERRORLEVEL! 
) 

echo !ERRORLEVEL! 

Und hier ist der AllTest.cpp wo der main() residiert:

#include "gtest/gtest.h" 
extern "C" void __gcov_flush(); 

int main(int argc, char** argv) 
{ 
    ::testing::InitGoogleTest(&argc, argv); 
    int r = RUN_ALL_TESTS(); 
    __gcov_flush(); 
    return r; 
} 

Ich habe "r" in einigen gedruckt Testen und es ist korrekt (0 oder 1, wenn ein Test fehlschlägt) Auch wenn ich einen "42" -Wert im Gegenzug hartcodierte, funktioniert es nicht. Ich bekomme diesen hartcodierten Wert nur, wenn ich RUN_ALL_TESTS() entferne.

Und Veranstaltung wie dieser Betrug:

set ERRORLEVEL= 0 

Jenkins noch AUSFALL Job spucken: -/

Was bin ich?

+0

'Set ERRORLEVEL = 0' wird nicht funktionieren. Dies wird nur Umgebungsvariable errorlevel erstellen, die sich von dem Exit-Code unterscheidet. Versuchen Sie es mit 'exit/b 0' – npocmaka

Antwort

0

Ich habe rund um das Thema gearbeitet dies mit: Using gtest in jenkins

so nenne ich glotzen nach dem Gtest lief, so dass Jenkins glücklich, und verwenden Sie Jenkins' JUnit-Test-Plugin nach dem verlinkten Beitrag.