Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否在方法内部设置自定义注释?_Java_Unit Testing_Annotations - Fatal编程技术网

Java 是否在方法内部设置自定义注释?

Java 是否在方法内部设置自定义注释?,java,unit-testing,annotations,Java,Unit Testing,Annotations,我开发了简单的单元测试库,只是为了好玩和体验。只要我编写单元测试,我就会遵循给定的时态或排列act断言模式。所以我认为,与其在测试方法体中以单行注释的形式编写模式名称,不如: @TestClass(enabled = false) public class DemonstrationTest { @UnitTest public void StringBuilderSuccess() throws AssertFailureException{ //Given

我开发了简单的单元测试库,只是为了好玩和体验。只要我编写单元测试,我就会遵循给定的时态或排列act断言模式。所以我认为,与其在测试方法体中以单行注释的形式编写模式名称,不如:

@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目的。但是谢谢你的回答。我将考虑这个问题的另一个解决办法。