相关疑难解决方法(0)

Mockito:模拟私有字段初始化

我如何模拟正在内联初始化的字段变量?

例如

class Test {
    private Person person = new Person();
    ...
    public void testMethod() {
        person.someMethod();
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我想在测试方法时测试person.someMethod() - Test#testMethod.

我需要模拟person变量的初始化.任何线索?

编辑:我不允许修改Person类.

java junit4 mockito powermockito

65
推荐指数
8
解决办法
12万
查看次数

@InjectMocks 在使用构造函数注入时不注入 2 个相同类型的模拟

我有 2 个几乎相同的课程:

class Foo1 {
    private Bar bar1;
    private Bar bar2;

    public void setBar1(Bar bar1) {
        this.bar1 = bar1;
    }

    public void setBar2(Bar bar2) {
        this.bar2 = bar2;
    }
}

class Foo2 {
    private Bar bar1;
    private Bar bar2;

    public Foo2(Bar bar1, Bar bar2) {
        this.bar1 = bar1;
        this.bar2 = bar2;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以这是setter vs构造函数。问题是@InjectMocks 只能与下面测试中的第一类一起正常工作:

@RunWith(MockitoJUnitRunner.class)
public class Test {
    @Mock
    private Bar bar1;

    @Mock
    private Bar bar2;

    @InjectMocks
    private Foo1 sut;
}
Run Code Online (Sandbox Code Playgroud)

要测试第二个类,我必须手动进行,因为对于两个 Bar 参数,@InjectMocks 选择了相同的模拟(这是随机选择)

@RunWith(MockitoJUnitRunner.class) …
Run Code Online (Sandbox Code Playgroud)

java mockito

5
推荐指数
0
解决办法
636
查看次数

如何模拟具有两种不同实现的接口

我有一个需要测试的类,它有两个不同类但接口相同的实例。这是代码的样子,

要测试的类:

@Service
public class MainClass {
   @Resource(name = "aClass")
   private IClass instance1;
   @Resource(name = "bClass")
   private IClass instance2;
}
Run Code Online (Sandbox Code Playgroud)

其他类:

@Service("aClass")
public class A implements IClass {}

@Service("bClass")
public class B implements IClass {}
Run Code Online (Sandbox Code Playgroud)

我的单元测试:

public MainClassTest {
   @InjectMocks
   private MainClass mainClass;

   @Mock
   private IClass instance1;
   @Mock
   private IClass instance2;

   @Test
   public void test() {...}
}
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,instance1 和 instance2 都是空的,因为它们没有被模拟。当接口只有一个实现时,这不会发生。

知道如何处理吗?

谢谢,安吉洛

java junit spring unit-testing mockito

5
推荐指数
1
解决办法
9624
查看次数

标签 统计

java ×3

mockito ×3

junit ×1

junit4 ×1

powermockito ×1

spring ×1

unit-testing ×1