Mockito-没有注入的模拟依赖项

问题描述 投票:0回答:1

我整天都在论坛上尝试模拟类,但是没有一种解决方案对我有用,而且我也不知道我做错了什么(我是Java测试的新手。)>

我有要测试的这个(重命名的)类,主要是每个if条件,以确保它们能正常工作:

public class MyClass {
    public static List<Object> MyClass(@NotNull Session session, @NotNull MyObject updated, @NotNull Mode mode)
    throws Exception {
        ModeList modes = MyUtil.geModes(mode);

        try {
            final Transaction tr = updated.getTransaction();
            MyObject original;

            if(tr == null) {
                original = new Foo().getCurrentBar(session, updated.getKey(), null, "en");
            } else {
                original = new Foo().getOtherBar(session,
                                                 updated.getKey(),
                                                 tr.getProp1().intValue(),
                                                 tr.getProp2().intValue(),
                                                 "en");
            }

            return SomeClass.check(updated, original, modes);
        } catch (Exception ex) {
            // handle
        }

        return null;
    }
}

[请注意,我无法更改此(或Foo类)/添加依赖项注入,需要按原样进行测试。我尝试过模仿,powerMock模仿,mockStatic,部分模仿等,它们都由于某种原因而失败,并且真正的getCurrentBar / getOtherBar被调用。

此时我可能正在获得隧道视野,但请提出建议。

我整天都在论坛上尝试模拟类,但是没有一种解决方案对我有用,而且我也不知道我做错了什么(我是Java测试的新手)。我有这个(重命名)...

java mockito powermock
1个回答
0
投票

此代码是错误的,应该使用工厂来获取Foo,因此您可以模拟工厂。但是,由于您无法修改它,因此下一个最好的方法是使用PowerMock。

© www.soinside.com 2019 - 2024. All rights reserved.