小编bde*_*deo的帖子

使用 ResourceInfo 和 mockito 的单元测试 ContainerRequestFilter

我正在尝试使用 Mockito 对使用 @NameBinding 应用的 ContainerRequestFilter 进行单元测试。过滤器检查注释字段以确定要执行的操作。查看示例代码:

注解

@Target({TYPE, METHOD})
@NameBinding
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    MyEnum info() default MyEnum.DEFAULT;
}
Run Code Online (Sandbox Code Playgroud)

我的枚举

public enum MyEnum {
    VALUE1,
    VALUE2,
    DEFAULT
}
Run Code Online (Sandbox Code Playgroud)

使用 MyEnum 作为条件的带注释的过滤器

@MyAnnotation
public class MyFilter implements ContainerRequestFilter {

    @Context
    private ResourceInfo resourceInfo;

    @Override
    public void filter(ContainerRequestContext containerRequestContext) throws IOException {

        if (resourceInfo.getResourceMethod().getAnnotation(MyAnnotation.class).info().equals(MyEnum.VALUE1)) 
        {
            // set some value or throw some exception (this can be verified in the test)
        }

        if (resourceInfo.getResourceMethod().getAnnotation(MyAnnotation.class).info().equals(MyEnum.VALUE2))
        {
           // set some value or throw …
Run Code Online (Sandbox Code Playgroud)

java unit-testing jax-rs jersey mockito

4
推荐指数
1
解决办法
4326
查看次数

标签 统计

java ×1

jax-rs ×1

jersey ×1

mockito ×1

unit-testing ×1