la production d'un rapport d'essai unité xml correcte et complète (Hudson)
-
05-10-2019 - |
Question
Je svUnit (une suite de tests unitaires pour R, une partie de sciViews ) pour qu'il produise également une sortie qui peut être lu par Hudson. en fait je l'ai déjà quelque chose qui fait cela, mais il ne gère pas les tests « désactivé ».
pour voir ce que je veux dire, jeter un oeil à la méthode protocol_junit.svTestData
dans la section fichier de svTestData.R.
le problème est que je ne l'ai pas réussi à trouver une définition du schéma accepté par Hudson et j'ai réussi à convaincre un projet Java à l'échec et l'erreur, de sorte que sa suite de test ajouterait un élément de <failure/>
et <error/>
à l'intérieur d'un quelques éléments de <testcase/>
, mais je n'a pas réussi à voir ce qui se passe avec une décoration @Ignore @Test
.
beaucoup d'autres ont posé cette même question, par exemple ici aussi , mais dans l'une des extrémités arrive à cette page qui est un bon point de départ mais pas Achevée. par exemple, il ne mentionne pas l'élément <error/>
j'ai découvert par essai et erreur.
J'ai essayé de lire la source lue par Hudson, mais je ne l'ai pas trouvé où commencer.
les indices?
La solution
a regarder de plus près les sources Hudson (en particulier, CaseResult.java ) je l'ai vu, y compris un élément <skipped/>
dans un élément de <testcase/>
est ce que je cherchais.
et juste pour référence future, RELAX NG syntaxe compacte du schéma que je produis (ne hésitez pas à modifier / maintenir):
junit.rnc:
#----------------------------------------
start = testsuite
property = element property {
attribute name {text},
attribute value {text}
}
properties = element properties {
property*
}
failure = element failure {
attribute message {text},
attribute type {text},
text
}
error = element error {
attribute message {text},
attribute type {text},
text
}
skipped = element skipped {
text
}
testcase = element testcase {
attribute classname {text},
attribute name {text},
attribute time {text},
(failure|error)?,
skipped?
}
testsuite = element testsuite {
attribute errors {xsd:integer},
attribute failures {xsd:integer},
attribute hostname {text},
attribute name {text},
attribute tests {xsd:integer},
attribute time {xsd:double},
attribute timestamp {xsd:dateTime},
properties,
testcase*,
element system-out {text},
element system-err {text}
}
#----------------------------------------
and junitreport.rnc
#----------------------------------------
include "junit.rnc" {
start = testsuites
testsuite = element testsuite {
attribute errors {xsd:integer},
attribute failures {xsd:integer},
attribute hostname {text},
attribute name {text},
attribute tests {xsd:integer},
attribute time {xsd:double},
attribute timestamp {xsd:dateTime},
attribute id {text},
attribute package {text},
properties,
testcase*,
element system-out {text},
element system-err {text}
}
}
testsuites = element testsuites {
testsuite*
}
#----------------------------------------