in test-reporter/src/parsers/dotnet-trx/dotnet-trx-parser.ts [64:105]
private getTestClasses(trx: TrxReport): TestClass[] {
if (trx.TestRun.TestDefinitions === undefined || trx.TestRun.Results === undefined) {
return []
}
const unitTests: {[id: string]: UnitTest} = {}
for (const td of trx.TestRun.TestDefinitions) {
for (const ut of td.UnitTest) {
unitTests[ut.$.id] = ut
}
}
const unitTestsResults = trx.TestRun.Results.flatMap(r => r.UnitTestResult).flatMap(result => ({
result,
test: unitTests[result.$.testId]
}))
const testClasses: {[name: string]: TestClass} = {}
for (const r of unitTestsResults) {
const className = r.test.TestMethod[0].$.className
let tc = testClasses[className]
if (tc === undefined) {
tc = new TestClass(className)
testClasses[tc.name] = tc
}
const error = this.getErrorInfo(r.result)
const durationAttr = r.result.$.duration
const duration = durationAttr ? parseNetDuration(durationAttr) : 0
const resultTestName = r.result.$.testName
const testName =
resultTestName.startsWith(className) && resultTestName[className.length] === '.'
? resultTestName.substr(className.length + 1)
: resultTestName
const test = new Test(testName, r.result.$.outcome, duration, error)
tc.tests.push(test)
}
const result = Object.values(testClasses)
return result
}