使用JMockit模拟在@Tested类中初始化的字段

时间:2017-11-09 23:34:28

标签: java unit-testing testng jmockit

我有一个这样的课程

class ClassA {
  @Injected
  Dao daos;

  private String str = ClassB.getString();

  public void myMethod(){
   useMyString(str);
  }
}

在上面的代码中,我有一个类ClassA,它使用由依赖注入框架注入的几个Injectable。它有一个变量str,它从ClassB中的静态方法获得,稍后在myMethod()方法中使用。我想测试myMethod()方法,但我要模拟变量str。我正在使用如下所示的TestNG测试:

class ClassATest{
  @Injectable
  Dao dao;

  @Tested
  ClassA classA;

  @Mocked 
  ClassB classB;

  @Test
  public void myTest(){
    new NonStrictExpectations(){
      {
         ClassB.getString(anyString);
         result = "mocked"
      }
    }
    classA.myMethod();
  }
}

在上面的测试中,因为classA已经被JMockit初始化,因为它被注释为@Tested,NonStrictExpectations块没有任何效果。我想知道如何在初始化@Tested类时使模拟定义生效?

0 个答案:

没有答案