Java 将Mockito中的InjectMock注释与未';没有初始化

Java 将Mockito中的InjectMock注释与未';没有初始化,java,android,unit-testing,android-fragments,mockito,Java,Android,Unit Testing,Android Fragments,Mockito,我试图使用Mockito对Android应用程序进行单元测试,特别是使用newInstance()初始化的片段。我在将模拟对象注入测试对象的私有成员变量时遇到问题。我看到的所有示例都使用new()而不是newInstance(),并且在初始化的同一行上显示了@InjectMocks注释。我可以不声明带有注释的变量,但稍后再初始化它吗 我有: public class MyFragmentTest extends TestCase { @Mock (name="memberVariabl

我试图使用Mockito对Android应用程序进行单元测试,特别是使用newInstance()初始化的片段。我在将模拟对象注入测试对象的私有成员变量时遇到问题。我看到的所有示例都使用
new()
而不是
newInstance()
,并且在初始化的同一行上显示了
@InjectMocks
注释。我可以不声明带有注释的变量,但稍后再初始化它吗

我有:

public class  MyFragmentTest extends TestCase {
    @Mock (name="memberVariableName") private MyObject mMyObjectMock;
    @InjectMocks private MyFragment mFragment;

    @Override
    protected void setUp() throws Exception {
       super.setUp();
       // Initialize mock objects that are being injected
       MockitoAnnotations.initMocks(this);

       // Work around for a known issue with Mockito and Dexmaker
       System.setProperty("dexmaker.dexcache", getInstrumentation().getTargetContext().getCacheDir().getPath());
    }
}

的javadoc很好地记录了mockito将如何执行注入,如果
MyFragment
具有无参数构造函数,则将使用setter或字段注入。但是,如果构造函数使用arg,那么所有arg都必须作为测试类中的
@Mock
字段出现而不是
initMocks(this)
,它做的事情不仅仅是初始化mock。