在过去的两天里,我一直在阅读和练习依赖注入,但没有任何结果,突然我发现需要一些框架才能使依赖注入工作。真的吗?让我的项目依赖于某个框架不是一种不好的做法吗?可以在不使用框架的情况下完成吗?
编辑:我是编程新手,所以我不明白建立一个类和使用它的方法(我不需要一个框架)和使用依赖注入之间有什么区别以及它有什么更好的地方
编辑:这是我没有使用框架的一个例子,而且事情不起作用 TestNG @Factory 注释 + 对依赖注入的了解不足
在过去的两天里,我一直在阅读和练习依赖注入,但没有任何结果,突然我发现需要一些框架才能使依赖注入工作。真的吗?让我的项目依赖于某个框架不是一种不好的做法吗?可以在不使用框架的情况下完成吗?
编辑:我是编程新手,所以我不明白建立一个类和使用它的方法(我不需要一个框架)和使用依赖注入之间有什么区别以及它有什么更好的地方
编辑:这是我没有使用框架的一个例子,而且事情不起作用 TestNG @Factory 注释 + 对依赖注入的了解不足
您不必使用框架,但它会帮助您编写更简洁的代码。例如,如果您想在不使用框架的情况下将模拟注入到类中,则需要通过添加 getter/setter、将其传递给构造函数或使用公共变量来实现这一点。
public class AClassToTest{
private A aDependentClass;
public void aMethodToTest(){
int i = aDependentClass.someDependentMethod();
..
..
}
}
在上面的代码中,aMethodToTest()
取决于aDependentClass.someDependentMethod()
返回的内容。这意味着您应该创建一个模拟类A
并模拟someDependentMethod
返回的内容。这在不使用框架的情况下仍然是可能的,例如通过添加 getter 和 setter 以便您可以在测试类中设置对象 A:
@Test
public void testAMethodToTest(){
//here you must set the object A in your AClassToTest object
//Create a mock of A with desired values
//and set it using a setter
}
例如,如果您使用 spring 进行依赖注入,它将允许您使用它的@Autowire
符号在其 IOC 容器中设置模拟对象。然后,您不需要为您的模拟对象设置 setter/getter,这将为您提供更清晰的代码
对于依赖注入, Guice很棒(个人意见)。至少我发现它比 Spring 提供的要好得多。它也非常轻巧。