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

为模式注释编写单元测试

龚招
2023-03-14
@Data
public class SampleRequest {
    @Valid
    List<someRequest> someReq;

    @NotNull
    @Size(min = 1)
    @Pattern(regexp = "^(https?|http)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]",
            message = "Invalid URL")
    String sampleURL;

    Integer Count;
}

我想为上面的内容编写单元测试,以测试我正在使用的注释的sampleURL,比如如果我给出任何应该与regex模式匹配的URL。我浏览了以下链接:如何在spring中进行单元测试验证注释,如何使用JUnit测试类的验证注释?但它们没有多大帮助,我也有setSampleURL函数。那么,如何为sampleURL变量编写测试呢。基本上,我想为regex模式编写测试,即我给sampleURL的值是否与regex匹配。

共有1个答案

锺离俊雄
2023-03-14

使用反射和AssertJ可能看起来很难看,但它没有Spring上下文初始化,速度快且简单

    @Test
    void reflection() throws NoSuchFieldException {
        final String url = "https://example.com"; // your URL here for validation
        final String regexp = Arrays.stream(
                SampleRequest.class.getDeclaredField("sampleURL").getAnnotationsByType(Pattern.class)
            )
            .findFirst()
            .get()
            .regexp();
        Assertions.assertThat(url)
            .as("Ensure that regexp from annotation successfully matched url '%s'", url)
            .matches(regexp);
    }
 类似资料:
  • 我不会告诉你有关后台任务的单元测试的任何内容,因为Hangfire没有添加任何特定方法 (除了 IJobCancellationToken 接口参数)去改变任务。使用您最喜爱的工具,并照常写入单元测试。本节介绍如何测试创建的后台任务。 所有的代码示例都使用静态 BackgroundJob 类来告诉你如何做这个或那些东西,只是出于简单演示的目的。但是当你想测试调用的静态方法时,会变得很痛苦。 不用担

  • 试图弄清楚我是否可以使用spring kafka和spring kafka测试为@KafkaListener编写单元测试。 我的听众课。 我的测试类别: 我的测试配置类: 有什么简单的方法可以做到这一点吗? 或者我应该以其他方式测试@KafkaListener?在单元测试中,如何确保在Kafka中收到新消息时调用@KafkaListener。

  • 问题内容: 我正在尝试使用Java注释处理器。我可以使用“ JavaCompiler”编写集成测试(实际上,我目前正在使用“ Hickory”)。我可以运行编译过程并分析输出。问题:即使我的注释处理器中没有任何代码,单个测试也会运行约半秒钟。以TDD样式使用它太长了。 对我而言,模拟依赖项非常困难(我将不得不模拟整个“ javax.lang.model.element”包)。有人成功编写了注释处理

  • 我在java中使用mockito编写单元测试。 这就是我要测试的声明。 电影是电影名称的集合,是识别电影的关键。 我嘲笑了守望者班 Mockito.when(watcher.watch(Matchers.any(Set.class))) “thenReturn”中包括什么??