Java 是否在方法内部设置自定义注释?
我开发了简单的单元测试库,只是为了好玩和体验。只要我编写单元测试,我就会遵循给定的时态或排列act断言模式。所以我认为,与其在测试方法体中以单行注释的形式编写模式名称,不如:Java 是否在方法内部设置自定义注释?,java,unit-testing,annotations,Java,Unit Testing,Annotations,我开发了简单的单元测试库,只是为了好玩和体验。只要我编写单元测试,我就会遵循给定的时态或排列act断言模式。所以我认为,与其在测试方法体中以单行注释的形式编写模式名称,不如: @TestClass(enabled = false) public class DemonstrationTest { @UnitTest public void StringBuilderSuccess() throws AssertFailureException{ //Given
@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注释下创建了redundand局部变量,以绕过这个问题
问题:在代码中是否有机会将注释置于断言之上
每个注释正文看起来像这样:
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.LOCAL_VARIABLE)
public @interface When {
}
我正在使用Java8。
如果有任何帮助,我将不胜感激
注:如果您想查看或贡献我的项目,您可以找到它。据我所知:注释只能在方法声明时应用于方法,而不能在调用时应用于方法 我看不出对上述代码有任何明确的注释。但是,如果你真的想只做注释 使用返回非void数据类型的方法包装断言语句。(可能是布尔值?)
在上面的实现中,注释将应用于方法的返回值。(您可以选择使用变量名存储它)据我所知:注释只能在声明方法时应用于方法,而不能在调用方法时应用于方法 我看不出对上述代码有任何明确的注释。但是,如果你真的想只做注释 使用返回非void数据类型的方法包装断言语句。(可能是布尔值?)
在上面的实现中,注释将应用于方法的返回值。(您可以选择使用变量名存储)Java 8不允许在语句上编写注释。 它被考虑过,但没有包含在Java8中 以下是一些背景 Java5+允许在声明上编写注释。 Java8+允许在类型上编写注释
用于在类型上编写注释的Java8特性以其代码名而闻名。Java8对Java注释进行了一些其他扩展,例如允许重复注释,并在类文件中表示局部变量上的声明注释。JSR 308还考虑了其他因素,包括:。尽管语句上的注释有很多,但最终JSR308,因此Java8,语句上的注释是有特点的。Java8不允许在语句上写注释。 它被考虑过,但没有包含在Java8中 以下是一些背景 Java5+允许在声明上编写注释。 Java8+允许在类型上编写注释
用于在类型上编写注释的Java8特性以其代码名而闻名。Java8对Java注释进行了一些其他扩展,例如允许重复注释,并在类文件中表示局部变量上的声明注释。JSR 308还考虑了其他因素,包括:。虽然语句上的注释有很多,但最终JSR308,因此Java8,语句上的注释功能。是的,我已经考虑过了,但是即使Assert方法返回布尔值,我也必须在一些局部变量中捕捉它。我想没有人(甚至我)会想在Assert方法上创建局部变量,只用于@Then目的。但是谢谢你的回答。我会考虑这个问题的另一个解决方案。是的,我已经考虑过了,但即使Assert方法返回boolean,我也必须在一些局部变量中捕捉它。我想没有人(甚至我)会想在Assert方法上创建局部变量,只用于@Then目的。但是谢谢你的回答。我将考虑这个问题的另一个解决办法。