假设我们有一个这样的类:-
class A {
internal val obj : Obj
get() = Application.getbean(Obj::class)
fun method1(){
val result = obj.somefunc()
..../code/
}
fun method2(){
...../code/
}
}
我不想使用junit嘲笑框架来编写单元测试来测试method1的功能,也不想嘲笑obj对象。在stackoverflow上的其他一些线程中,人们建议使用注入的构造函数依赖关系,但由于循环依赖关系的问题,在我的情况下这是不可能的。在其他一些答案中,人们建议将对象实例化移动到方法中,但我不想那样做。有没有办法模拟此obj对象。
答案 0 :(得分:0)
以不可测试的方式编写的代码很难进行单元测试。这就是为什么您应该注入依赖性而不是保留它们的原因,这就是为什么您应该获取对象而不是自己创建它们的原因。如果您假设您的代码可能已经过测试,请始终考虑如何进行测试。
在您的情况下,模拟Obj
有点困难,但并非不可能,因为对象的实际创建(构造函数调用)是使用不同的类(而不是被测试的类)完成的。
在您的示例中,您使用的是静态方法,也许您可以使用PowerMockito模拟其行为?请看看这个answer。
除此之外,我只能建议更改代码。 要将对象创建类作为依赖项注入或使用其他方法,这可能涉及一些体系结构更改。