JUnit style tests result to file

This commit is contained in:
Vladimir Enchev
2016-02-22 16:28:45 +02:00
parent 2a8b2ae370
commit b14d878dd8

View File

@ -5,6 +5,7 @@ import {topmost, Frame} from "ui/frame";
import {TextView} from "ui/text-view";
import * as platform from "platform";
import "./ui-test";
import fs = require("file-system");
Frame.defaultAnimatedNavigation = false;
@ -113,20 +114,36 @@ var running = false;
var testsQueue = new Array<TestInfo>();
function printRunTestStats() {
let testFileContent = new Array<string>();
var j;
var testsCount = 0;
var failedTestCount = 0;
var failedTestInfo = [];
for (j = 0; j < testsQueue.length; j++) {
if (testsQueue[j].isTest) {
testsCount++;
if (!testsQueue[j].isPassed) {
failedTestCount++;
failedTestInfo.push(testsQueue[j].testName + " FAILED: " + testsQueue[j].errorMessage);
}
let allTests = testsQueue.filter(t=> t.isTest);
testFileContent.push("<testsuites>");
testFileContent.push(`<testsuite name="NativeScript Tests" timestamp="${new Date()}" hostname="hostname" time="0" errors="0" tests="${allTests.length}" skipped="0" failures="${failedTestCount}">`);
for (j = 0; j < allTests.length; j++) {
let testName = allTests[j].testName;
if (!allTests[j].isPassed) {
failedTestCount++;
let errorMessage = allTests[j].errorMessage;
failedTestInfo.push(allTests[j].testName + " FAILED: " + allTests[j].errorMessage);
testFileContent.push(`<testcase classname="classname" name="${testName}" time="0"><failure type="exceptions.AssertionError">${errorMessage}</failure></testcase>`);
} else {
testFileContent.push(`<testcase classname="classname" name="${testName}" time="0"></testcase>`);
}
}
let finalMessage = "=== ALL TESTS COMPLETE === \n" + (testsCount - failedTestCount) + " OK, " + failedTestCount + " failed" + "\n";
let finalMessage = "=== ALL TESTS COMPLETE === \n" + (allTests.length - failedTestCount) + " OK, " + failedTestCount + " failed" + "\n";
TKUnit.write(finalMessage, messageType.info);
for (j = 0; j < failedTestInfo.length; j++) {
let failureMessage = failedTestInfo[j];
@ -134,6 +151,12 @@ function printRunTestStats() {
finalMessage += "\n" + failureMessage;
}
testFileContent.push("</testsuite");
testFileContent.push("</testsuites>");
let testFile = fs.File.fromPath(fs.path.join(fs.knownFolders.documents().path, "test-results.xml"));
testFile.writeTextSync(testFileContent.join(""));
let messageContainer = new TextView();
messageContainer.text = finalMessage;
topmost().currentPage.content = messageContainer;
@ -156,7 +179,7 @@ export var runAll = function (testSelector?: string) {
// TODO: We may schedule pending run requests
return;
}
var singleModuleName, singleTestName;
if (testSelector) {
var pair = testSelector.split(".");
@ -168,7 +191,7 @@ export var runAll = function (testSelector?: string) {
singleModuleName = singleModuleName.toLowerCase();
}
}
singleTestName = pair[1];
if (singleTestName) {
if (singleTestName.length === 0) {
@ -178,7 +201,7 @@ export var runAll = function (testSelector?: string) {
}
}
}
console.log("TESTS: " + singleModuleName + " " + singleTestName);
var totalSuccess = 0;
@ -205,7 +228,7 @@ export var runAll = function (testSelector?: string) {
if (singleTestName && (singleTestName !== testName.toLowerCase())) {
continue;
}
var testFunction = test[testName];
if ((typeof (testFunction) === "function") && (testName.substring(0, 4) == "test")) {
if (test.setUp) {