Кастамизирую под себя репорт, который генерит maven-surefire-plugin. Получилось вставить в репорт свое имя теста. заимплементил тестовый класс от ITest и переопределил getТestName(), НО теперь получилось что имя теста дублируется, т.е имеет вид : testName (testName)… кто знает, в чем может быть причина и как от этого избавиться ?
Привет Виктор,
Для увеличения шансов на получение ответа с решением вашей проблемы, опишите достаточный контекст для того, чтобы другие участники форума могли понять что происходит и в чем может быть проблема.
Для этого, было бы классно привести достаточно исходный код с проблемой, такой, чтобы учасники форума могли воспроизвести у себя и другие данные.
Доброго времени суток !
Вот мой кусок из pom.xml:
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.9</version>
<configuration>
<properties>
<property>
<name>listener</name>
<value>org.uncommons.reportng.HTMLReporter, org.uncommons.reportng.JUnitXMLReporter</value>
</property>
</properties>
<workingDirectory>target/</workingDirectory>
</configuration>
</plugin>
...
В тесте перегруженный метод имеет вид аля :
@Override
public String getTestName() {
return "String";
}
И получается, что в генерируемом репорте имя теста будет иметь вид - String (String), т.е в скобках получается дублирование…
Вот о чем я говорю:
Попробовал немного поковыряться, готового решения вам не дам, но могу попробовать подсказать. Насколько я понял принцип действия при генерации репорта все данные о выполненных сьютах собираются в объекте Context и мержатся со стандартными теймлейтами, которые определяют структуру html-страниц результирующего отчета.
Сами теймплейты вы можете вытянуть отсюда: reportng-1.1.2.jar\org\uncommons\reportng\templates\html\ и попробовать понять почему для переопределенного названия теста появляются дополнительные скобки.
Но вот что делать, если вы сможете понять и поменять как вам надо - не скажу вернее вы можете юзать подхаченный jar, но оно того не стоит.
Кроме того, вы видели, что если в тестовом классе несколько методов, то все они будут идти с одним и тем же именем? Сомнительное удовольствие как по мне.
Вообще на вашем месте я попробовал бы переформулировать задачу, может то что вам надо (кастомизацию названий классов/тестов?) можно решить другим способом.
может вам использовать в перегруженом методе использовать result.getName()
я на проэкте воспользовлся листенером
public class Screenshot extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult result) {
File file = new File("");
Reporter.setCurrentTestResult(result);
System.out.println(file.getAbsolutePath());
Reporter.log("screenshot for "+ result +"<div style=\"height:768px; width:1000px; overflow:scroll\"><img src=\"../"+result.getName() +".png"+"\"></div>", true);
try {
TestBase.CaptureScreenshot(result.getName());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Reporter.setCurrentTestResult(null);
}
с ReportNG репортами роботает отлично,
Всем привет !
Ребята, вообще все перепробовал и ничего не получается…
У меня один тестовый метод и ему дата провайдером подаются различные файлы с тестовыми наборами. Вот я пытался сделать, чтобы в репорте вместо имени теста как-раз отображалось имя того файла, который передается…
Пробовал и свой репортер переопределить и листенер… Ничего… Может кто-нить конкретно может сказать, что и как надо сделать, а то уже руки опускаются… Спасибо !
Самое простое решение “в лоб”
class Test {
@Test
public void test1() {}
public String toString() {
return "blablabla";
}
}
в репорте будет
test1 on blablabla
А можете пояснить как так получается ?
И в какой момент этот метод (toString) отрабатывает ? До теста, после или во время выполнения ?
А я хз. Попробуйте. Но вроде криво работает.
Максимум что у меня получилось - это через фабрику+дата_провайдер. Копать дальше особого желания нет.
Спасибо Вам за ответ !