Akhil Sunny
11/14/2019, 11:00 PMtask iosTest {
def device = project.findProperty("iosDevice")?.toString() ?: "iPhone 8"
dependsOn 'linkTestDebugExecutableIos'
group = JavaBasePlugin.VERIFICATION_GROUP
description = "Runs tests for target 'ios' on an iOS simulator"
doLast {
def binary = kotlin.targets.ios.compilations.test.getBinary('EXECUTABLE', 'DEBUG')
def infoPlistSrc = file("$rootProject.projectDir/src/iosTest/resources/Info.plist")
def infoPlistDest = file("$binary.parentFile/Info.plist")
Files.copy(infoPlistSrc.toPath(), infoPlistDest.toPath(), StandardCopyOption.REPLACE_EXISTING)
exec {
commandLine 'export', 'SIMCTL_CHILD_CFNETWORK_DIAGNOSTICS=3'
commandLine 'xcrun', 'simctl', 'spawn', device, binary.absolutePath
}
}
}
- this simulator runs in a terminal and executes the tests. But I can't find any reports generated by it(html/xml ). Is it possible to have reports generated by this simulator ? or is there any other way to generate reports while unit testing a Kotlin iOS output ? . Pls helpbasher
11/14/2019, 11:08 PMAkhil Sunny
11/14/2019, 11:19 PM'xcrun', 'simctl', 'spawn', device, binary.absolutePath + --ktest_logger=GTEST | sed -E -f kn_gtest_to_junit.sed
. ?basher
11/14/2019, 11:20 PMdoLast {
def originalOutputFile = 'test_report.txt'
def reportFile = project.findProperty('jUnitReportFile')
def isReportingToFile = (reportFile != null)
def outputStream = reportFile == null ? System.out : new FileOutputStream(originalOutputFile)
def testTask = exec {
executable 'xcrun'
args = [
'simctl',
'spawn',
'-s',
simulatorName,
testExeTask.outputFile.get()
]
standardOutput = outputStream
ignoreExitValue = isReportingToFile
}
if (isReportingToFile) {
exec {
executable 'sed'
args = [
'-E',
'-f','fastlane/kn_gtest_to_junit.sed',
originalOutputFile
]
standardOutput = new FileOutputStream(reportFile)
}
if (testTask.exitValue != 0) {
throw new GradleException("Tests failed. Exit code: ${testTask.exitValue}. See test report for more info.")
}
}
}
Akhil Sunny
11/18/2019, 12:01 AMdef reportFile = project.findProperty('jUnitReportFile')
. I am getting it's value as nullbasher
11/18/2019, 12:02 AM-PjUnitReportFile
or you can just replace that with a hard-coded path def reportFile = 'path_to_final_xml'
Akhil Sunny
11/18/2019, 12:04 AM