我开发简单的单元测试库,只是为了乐趣和体验。只要我编写单元测试,我就会遵循给定-何时-然后或安排-行为-断言模式。所以我想,不要将此模式名称写为测试方法正文中的单行注释:
@TestClass(enabled = false)
public class DemonstrationTest {
@UnitTest
public void StringBuilderSuccess() throws AssertFailureException{
//Given
String firstTitle = "CosmicWhale";
String secondTitle = "AmbientTurtle";
StringBuilder stringBuilder = new StringBuilder();
String expected = firstTitle + " " + secondTitle;
//When
String actual = stringBuilder.append(firstTitle).append(" ").append(secondTitle).toString();
//Then
btester.framework.Assert.assertEquals(expected, actual);
}
}
我可以创建注释来遵循此模式。这更加优雅:
@UnitTest
public void StringBuilderSuccess() throws AssertFailureException{
@Given
String firstTitle = "CosmicWhale";
String secondTitle = "AmbientTurtle";
StringBuilder stringBuilder = new StringBuilder();
String expected = firstTitle + " " + secondTitle;
@When
String actual = stringBuilder.append(firstTitle).append(" ").append(secondTitle).toString();
@Then
String localVariable;
btester.framework.Assert.assertEquals(expected, actual);
}
我的问题是,每个注释都必须位于某个局部变量之上。这对于@Given和@When注解来说不是问题,但是对于最后一个@Then注解来说这是一个大问题。我在 @Then 注释下创建了冗余局部变量,以绕过该问题。
问题:代码中是否有机会在 Assert 上方放置注释?
每个注释体看起来像这样:
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.LOCAL_VARIABLE)
public @interface When {
}
我正在使用 Java 8。 我将不胜感激任何帮助。
诗。如果你想查看或贡献我的项目,可以找到here .
最佳答案
Java 8 不允许在语句上编写注释。 它被考虑过,但没有包含在 Java 8 中。
这是一些背景。
Java 5+ 允许在声明上编写注释。 Java 8+ 允许在类型上编写注释。
用于在类型上编写注释的 Java 8 功能因其代号 "JSR 308" 而闻名。 。 Java 8 对 Java 注解进行了一些其他扩展,例如允许重复注解,以及在类文件中的局部变量上表示声明注解。 JSR 308还考虑了其他extensions to annotations ,包括annotations on statements 。虽然语句上的注释有多个use cases ,最终是 JSR 308,因此是 Java 8,did not include语句注释功能。
关于java - 在方法内设置自定义注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35615730/