简体   繁体   English

助手类中的Jmockit @Mocked未初始化

[英]Jmockit @Mocked inside a helper class doesn't initialize

If I have the following; 如果我有以下情况;

public class ClassA {

   public void methodA(){
    System.out.println("In ClassA, methodA");
  }
}
public class ClassB {

  public void methodB(){
  }
}

and a junit test of; 和junit测试;

@Test
public void testMocked(@Mocked final ClassB mockedB) {
    System.out.println("Mocked inline");
    new MockUp<ClassA>() {
        @Mock
        public void methodA() {
            System.out.println("Inline mockup, mockedB:" + mockedB);
        }
    };
    ClassA a = new ClassA();
    a.methodA();

}

Then when I run the test I get; 然后,当我运行测试时,我得到了;

Mocked inline
Inline mockup, mockedB:jmockitpractice.ClassB@329b0985

Which is as expected, the classB is Mocked, and an instance is available. 符合预期,classB被模拟,并且实例可用。

But, if I change this to create a helper class for mocking, 但是,如果我更改此设置以创建用于模拟的助手类,

public class MockHelper {
  @Mocked ClassB classB;
  public void setupMocks(){

    new MockUp<ClassA>() {

        @Mock
        public void methodA(){
            System.out.println("In setupMocks, classB:"+classB);
        }
    };
  }
}

and the junit becomes; junit变成了

@Test
public void testMockedInClass() {
    System.out.println("Mocked in helper class");
    MockHelper mh = new MockHelper();
    mh.setupMocks();
    ClassA a = new ClassA();
    a.methodA();

}

the result I get is; 我得到的结果是;

Mocked in helper class
In setupMocks, classB:null

classB is not initialized by the @Mocked inside MockHelper MockHelper中的@Mocked不会初始化classB

I would like to have all the mocking in a helper class, rather than having to declare all the mocking in the test class. 我想将所有模拟都放在帮助器类中,而不是必须在测试类中声明所有模拟。 Any ideas why this doesn't work? 任何想法为什么这不起作用? Thanks. 谢谢。

Thanks Dom Farr, the answer was inheritance. 感谢Dom Farr,答案是继承。

public class MockHelper {

@Mocked
ClassB classB;

public void setupMocks() {

    new MockUp<ClassA>() {

        @Mock
        public void methodA() {
            System.out.println("In setupMocks, classB:" + classB);
        }
    };
}
}

and public class mockTest extends MockHelper { 公共类嘲笑测试扩展了MockHelper {

@Test
public void testMockedInClass() {
    System.out.println("Mocked in helper class");
    setupMocks();
    ClassA a = new ClassA();
    a.methodA();

}

}

As the test class extends the helper, it now works; 随着测试类扩展帮助程序,它现在可以工作。

Mocked in helper class
In setupMocks, classB:jmockitpractice.ClassB@5d54e317

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM