我们的自动化框架是用Java编写的,并使用了Testng。我们使用Int
注释来标记我们的测试,并提供我们在Gherkin中编写的测试组和描述。我们使用Serenity创建的测试报告
我一直在尝试创建一个静态常量类,我们可以使用它来构建测试描述,以便它处理HTML标记而不是将其放入> stranger @_ @Double @Double (1 :: Int)
本身,以便更容易阅读,因此任何HTML格式测试报告使用的可以在这个类中完成而不是每个
例如:
@Test
实际上看起来像:
String
我目前的代码:
@Test( groups = { TestGroup.One, TestGroup.TWO }, description =
"<b>Given</b> I am in Scenario One</br>" +
"<b>When</b>I do something</br>" +
"<b>Then</b>I get a result")
protected void testScript() {
...
}
答案 0 :(得分:1)
注释属性值必须是Java中的编译时常量。请参阅Java文档中的allowed expressions。
在TestNG中,可以通过创建自定义TestNG @Test
annotation transformer来完成描述属性的格式设置。
示例代码:
public class MyAnnotationTransformer implements IAnnotationTransformer {
private static final String GIVEN = "given: ";
private static final String WHEN = "when: ";
private static final String THEN = "then: ";
@Override
public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
if (testMethod != null) {
String description = annotation.getDescription();
if (description != null && !description.isEmpty()) {
StringBuilder sb = new StringBuilder();
for (String item : description.split("\\|")) {
if (item.startsWith(GIVEN)) {
sb.append("<b>Given</b> ").append(item.substring(GIVEN.length())).append("<br />");
} else if (item.startsWith(WHEN)) {
sb.append("<b>When</b> ").append(item.substring(WHEN.length())).append("<br />");
} else if (item.startsWith(THEN)) {
sb.append("<b>Then</b> ").append(item.substring(THEN.length())).append("<br />");
} else {
sb.append(item).append("<br />");
}
}
description = sb.toString();
annotation.setDescription(description);
}
}
}
}
然后该方法将注释如下:
@Test( groups = { TestGroup.ONE, TestGroup.TWO }, description =
"given: I am in Scenario One" +
"|when: I do something" +
"|then: I get a result")
protected void testScript() {
//...
}
注意:在实现自定义TestNG侦听器时,我们需要确保它们由TestNG使用。 (可以在TestNG XML测试套件或through other means中指定监听器。)
在这种情况下得到的描述将是:
<b>Given</b> I am in Scenario One<br /><b>When</b> I do something<br /><b>Then</b> I get a result<br />
我希望这会有所帮助。