Мой TestSuite работает во время сборки с использованием цели ant.
Я хотел бы в своем наборе получить доступ к TestResult и выполнить некоторые действия, если тесты пройдут успешно или нет.
Есть ли способ получить объект в методе tear down?
Спасибо

1
danieln 20 Янв 2013 в 12:39
Не уверен, зачем вам обращаться к нему из самого тестового кода. Однако, если вам просто нужно как-то изменить результаты, это может помочь: skill-guru.com/blog/2010/03/26/…. Если честно, манипулирование результатами в самом тесте звучит подозрительно :)
 – 
Peter Butkovic
20 Янв 2013 в 12:56
1
Вовсе не буду манипулировать результатами. Я просто хочу прочитать их, чтобы уведомить о каких-то других действиях по сборке.
 – 
danieln
20 Янв 2013 в 12:58
Ну, в этом случае вы можете использовать предложенный способ, так как в таком случае вы можете отделить тесты от триггеров (что я считаю преимуществом по сравнению с другим подходом)
 – 
Peter Butkovic
20 Янв 2013 в 13:04

1 ответ

Лучший ответ

С jUnit3 я бы попробовал создать подкласс Test и перезаписать метод run. Это предоставит мне доступ к экземпляру TestResult. Что-то вроде этого:

public class MyTest extends Test {
  @Overwrite
  public void run(TestResult result) {
    super.run(result);
    doSomethingWithResults(result);
  }

  // ...
}

С jUnit4 я бы рассмотрел возможность реализации TestRunner (на основе стандартного бегуна). Звучит сложно, но на самом деле это не так. Создайте подкласс по умолчанию и просто добавьте аннотацию @RunWith, чтобы использовать свой собственный бегун (который может что-то делать с результатами)

0
Andreas Dolk 20 Янв 2013 в 13:07
Спасибо. Следует ли мне изменить @RunWith в моем наборе или в тестовых классах?
 – 
danieln
20 Янв 2013 в 14:20
И еще вопрос, есть ли у вас опыт сбора такой информации? Вы знаете, где я могу его найти? Конечно, реализовать раннер несложно, но я не смог найти информации о результатах тестирования ...
 – 
danieln
20 Янв 2013 в 14:32
1
Расширьте средство выполнения по умолчанию: BlockJUnit4ClassRunner , затем перезапишите [run] (junit.sourceforge.net/javadoc/org/junit/runners/…. Я думаю, вам также нужно написать custum RunNotifier, который обертывает тот, который вы получаете и позволяет перехватывать уведомления о сбоях.На ваш вопрос: нет, никогда не делал, но похоже, что нужно.
 – 
Andreas Dolk
20 Янв 2013 в 14:53
Спасибо! В итоге я расширил RunListener и добавил его в RunNotifier, в который я попадаю run. Спасибо за помощь!
 – 
danieln
20 Янв 2013 в 15:38
Круто :) Когда мне понадобится что-то подобное, я вернусь к своему ответу :)
 – 
Andreas Dolk
20 Янв 2013 в 16:46