2014-05-13 8 views

risposta

1

È possibile utilizzare un framework che consente chiamate di simulazione a costruttori come JMockit o Powermock.

Powermock

JMockit

3

Mocking opera su metodi e interfacce, non campi; inoltre, opera su membri di istanza, non membri statici. Mockito e Powermock non sono gli strumenti giusti per risolvere questo problema.

Anche se è possibile use reflection to set final fields, si sta effettivamente lavorando intorno alla vostra dichiarazione, e sono soggetti alle limitazioni e rischi di JLS 17.5.3.

Un disegno migliore sarebbe quella di riscrivere il metodo nel sistema in prova per iniettare la dipendenza SomeClass:

public void methodUnderTest() { 
    methodUnderTest(MyClass.field); 
} 

/** Package-visible for testing. Test this method instead. */ 
void methodUnderTest(SomeClass someClass) { 
    someClass.firePhotonTorpedoes(); 
}