Java 如何使用注释测试依赖项注入?

Java 如何使用注释测试依赖项注入?,java,spring,dependency-injection,Java,Spring,Dependency Injection,在Spring框架或JavaEE中,有基于注释的依赖注入 通常你会这么做 class X { Y var; public X(Y var) { this.var = var } } 这很容易测试和模拟。您只需为测试实例化类Y 但是这个怎么样 class X { @Inject or @Autowired Y var; public X( ) { } } 基于注释的依赖项注入怎么样。 您的问题与硬编码安

在Spring框架或JavaEE中,有基于注释的依赖注入

通常你会这么做

class X
{
    Y var;

    public X(Y var)
    {
       this.var = var
    }
}
这很容易测试和模拟。您只需为测试实例化类Y

但是这个怎么样

class X
{
    @Inject or @Autowired
    Y var;

    public X( )
    {

    }
}
基于注释的依赖项注入怎么样。 您的问题与硬编码安装相同。 我不可能像在第一个代码示例中那样注入模拟对象。我如何测试它

我不可能像在计算机中那样注入模拟对象 第一个代码示例

为什么呢

@Component
class X {
    Y var;

    @Autowired
    public X(Y var)
    {
       this.var = var
    }


   @Component
   class Y {
  
   }
然后

@RunWith(SpringRunner.class)
public class ApiControllerTest {
 
    @Autowired
    private X x;
 
    @Configuration
    static class Config {
 
        @MockBean
        private Y y;
    }
}

现在唯一的办法就是反思。据我所知,使用诸如Mockito之类的其他框架是指如何在没有spring和注释的情况下进行依赖项注入?因为你说的是带有注释的依赖注入。这些注释来自spring本身,就像您所拥有的
@Autowired
。。。通过重构代码使其易于测试?这正是为什么构造函数注入是推荐的做法的原因