当前位置: 首页 > 知识库问答 >
问题:

斯波克:测试Groovy类是否有特定的注释?

孙元明
2023-03-14

例如,有没有办法测试给定的Groovy类是否有@Slf4j注释?

这是在TDD上下文中:在看到失败的测试之前,我不想添加注释。

共有1个答案

太叔繁
2023-03-14

@Slf4j批注具有@Retence(SOURCE)。因此注释信息在运行时不可用。这使得测试几乎不可能。您可以读取源文件并在测试中解析它,检查是否有@Slf4j注释。

使用带有@Retention(RUNTIME)的注释会改变图片:

class AnnotationSpec extends Specification{

    void "test that class has annotation"() {
        given:
        def annotation = ShouldHaveAnnotation.class.getAnnotation(ClassAnnotation)

        expect:
        annotation != null
    }
}

@Target([TYPE])
@Retention(RetentionPolicy.RUNTIME)
@interface ClassAnnotation{

}

@ClassAnnotation
class ShouldHaveAnnotation {

}

到目前为止,以事实为基础的答案。

我对TDD的看法:

测试用例的意义是什么?你只是想盲目地追随TDD吗?

每一个所谓的软件工艺流程都是基于软件开发与1800世纪家具制造相关的假设。我知道如何制作家具,燕尾榫是最结实的接头,看起来很棒,但非常昂贵。饼干店很现代,看起来不太好看,但又结实又便宜。所以我根据自己的经验决定是选择燕尾榫还是现代饼干。

我通常不测试不会引起麻烦的东西。我怎么知道,...很好的经验。只需在类上使用@CompileStatic注释,编译器就会捕获丢失的日志实例,或者只编写一个调用使用记录器的方法的测试。

TDD作为优秀设计的来源有一个标志:TDD创造了良好的微观软件设计,但忽略了宏观设计,而这是软件最重要的部分。

 类似资料:
  • 我在spock和groovy的初始阶段,我试图测试一个简单的Spring启动应用程序,并获得 下面是我的java和groovy代码以及异常详细信息 TestController.java TestControllerSpec。棒极了 我确信我的代码遗漏了什么

  • 我有一个关于SPOCK+Drools测试的问题。事情是这样的, 我正在部署的webapp W/O中运行测试(如果这有任何意义的话:))。我将jar添加到类路径中(而不是WEB-INF/libs),现在运行良好。

  • 问题内容: 我正在使用反射来查看附加到类的属性的注释是否具有特定类型。目前我正在做: 这让我有些不高兴,因为它依赖于完全合格的类名称的字符串。如果将来更改命名空间,则可能会导致细微的错误。 我想要做: 但是是抽象类,无法实例化。有没有一种方法可以针对接口或抽象类进行模拟(或基本上使用)? 问题答案: 你只是在寻找 ?

  • 我在一个Java项目中工作,并开始使用Spock框架在Groovy中编写单元测试。但我对Spock的嘲讽功能有意见,希望有人能找出我做错了什么。 然后,我使用Spock在Groovy中编写了以下单元测试: 此测试失败如下: dofoo调用getfoo:21没有可用的foo

  • 我是Spock框架的新手,在使用抽象java测试类时遇到了问题。 我想要的是一个groovy测试类,它用一些常用的方法扩展一些其他java抽象类,这些方法反过来扩展规范类。 当我运行GroovyTest类时,我得到以下错误: Org.SpockFramework.Runtime.InvalidSpecException:规范“org.my.package.AbstractTest”未正确编译(Sp