создание правильного и полного отчета о модульном тестировании XML (для Hudson) - PullRequest
2 голосов
/ 24 сентября 2010

Я расширяю svUnit (пакет модульного тестирования для R, часть sciViews ), так что он также производит вывод, который может быть прочитан Хадсоном. на самом деле у меня уже есть кое-что, что делает это, но это не обрабатывает «деактивированные» тесты.

чтобы понять, что я имею в виду, взгляните на метод protocol_junit.svTestData в файле svTestData.R .

проблема в том, что мне не удалось найти какое-либо определение схемы, принятой Хадсоном, и мне удалось убедить проект Java в сбое и ошибке, так что его набор тестов добавил бы <failure/> и <error/> элемент внутри нескольких элементов <testcase/>, но мне не удалось увидеть, что происходит с украшением @Ignore @Test.

многие другие задали этот же вопрос, например, и здесь , но в итоге можно получить эту страницу , которая является хорошей отправной точкой, но не завершена. например, в нем не упоминается элемент <error/>, который я обнаружил методом проб и ошибок.

Я пытался прочитать источник, прочитанный Хадсоном, но не нашел, с чего начать.

есть намеки?

1 Ответ

0 голосов
/ 25 сентября 2010

более подробно рассмотрел источники Гудзона (в частности, CaseResult.java ). Я увидел, что включение элемента <skipped/> в элемент <testcase/> - это то, что я искал.

и просто для дальнейшего использования, компактный синтаксис RELAX NG создаваемой мной схемы (не стесняйтесь редактировать / поддерживать):

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*
}
#----------------------------------------
...