java - 在方法内设置自定义注释?

标签 java unit-testing annotations

我开发简单的单元测试库,只是为了乐趣和体验。只要我编写单元测试,我就会遵循给定-何时-然后或安排-行为-断言模式。所以我想,不要将此模式名称写为测试方法正文中的单行注释:

@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/

相关文章:

python - 使用django.test.client测试app http请求,报错

java - Guava CacheLoader - 如果同时设置了 expireAfterWrite 和 expireAfterAccess,则无效不会立即使条目无效

java - 如何将单个对象与多个 RMI 服务器绑定(bind)

java - 新的 JUnit 4.8.1 @Category 渲染测试套件是否几乎过时了?

php - Codeigniter 单元测试模型

java - 我可以在非 EE 独立环境中使用 JPA 注释吗?

java - 为什么不能将 @SafeVarags 应用于最终类中的实例方法?

java - JGit:我可以在不检查的情况下找出 Git 存储库中是否存在特定标签吗?

java - 为什么下面代码的输出没有区别?

spring - 对于Spring自动检测,组件和服务有什么区别?