有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaPowerMock与依赖注入

我有一个相当复杂的Android项目,我想开始彻底测试。 所以我实现了依赖注入,以便能够测试几个组件(我使用Kodein)。 然后我开始编写测试,我发现我必须使用PowerMock来模拟对文件的调用。例如,创建。 PowerMock还可以模拟构造函数、工厂方法等。因此,基本上,对于测试,我可以实现相同的依赖注入结果,但不需要修改代码

所以我的问题是: 如果我可以用PowerMock模拟任何东西,那么仍然有理由实现依赖注入吗


共 (1) 个答案

  1. # 1 楼答案

    有些情况下,你会使用其中一个而不是另一个,有时两者都会使用。这完全取决于你在测试什么。Power Mock可以让你更好地控制你能测试或不能测试的内容。而DI会给你更直接的结果

    以下是一些例子: 假设你有匿名课程

                    @Override
                    public Query getQuery() {
                        Query q = Query.empty();
                        if (wp.minSpeed < 0)
                            q = Query.and(q, Query.eq(Speed.Function, WayPoint));
                        else {
                            q = Query.and(q, Query.eq(Speed.Function, Field));
                            q = Query.and(q, Query.eq(Speed.Calc, wp.maxSpeed-wp.minSpeed));
                        }
                        q = Query.and(q, Query.eq(Speed.Id, wp.altitude/greatCircle));
                        return q;
                    }
    

    因为没有办法测试匿名类来实现100%的覆盖率。你应该知道权力是唯一的途径。你只能模仿那个班级的行为

    但是,如果你有一些乏味的类有多个类调用,你可能需要考虑使用依赖注入来减少间谍/嘲弄的数量。