JMockit 1.1 kullanıyorum ve tek yapmak istediğim özel bir yöntem çağırmak ve dönüş değerini test etmek. Ancak, bunun nasıl yapılacağını tam olarak anlamada sorun yaşıyorum JMockit De-Encapsulation örneğinden.Test sonucu için JMockit üzerinden özel bir yöntem çağırma
test etmek çalışıyorum yöntem bu sınıfta özel bir yöntemdir:
public class StringToTransaction {
private List<String> parseTransactionString(final String input) {
// .. processing
return resultList;
}
}
Ve benim test kod aşağıda belirtilmiştir.
@Test
public void testParsingForCommas() {
final StringToTransaction tested = new StringToTransaction();
final List<String> expected = new ArrayList<String>();
// Add expected strings list here..
new Expectations() {
{
invoke(tested, "parseTransactionString", "blah blah");
returns(expected);
}
};
}
Ve alıyorum hatadır: Sadece sonucu test .. ben sınıfını taklit istiyor sanmıyorum çünkü
Belki, burada bütün API yanlış anlamış özel yöntemi çağırmak.java.lang.IllegalStateException: Missing invocation to mocked type at this point; please make sure such invocations appear only after the declaration of a suitable mock field or parameter
Merhaba @JeffOlson - hangi sınıf invoke() yöntemidir? Beklentilerde, invoke() bir korunan örnek yöntemidir. Ya da sadece java.lang.reflect.Method.invoke() kullanın ve tamamen JMockit'i göz ardı edin .. –
Sonunda anladığım kadarıyla ... "Deencapsulation.invoke", teşekkürler @JeffOlson ve https: // gruplarında Rogerio'ya teşekkürler. google.com/d/msg/jmockit-users/oEgjW0DfmgU/3pEE1mjt1ncJ. –
Evet, doğru. Daha açık olmamak için özür dilerim, ancak doğrudan (örneğin statik bir aktarım yoluyla) ilk örneğinizde 'invoke() 'yi kullandınız, böylece onu olduğu gibi bırakacağımı düşündüm. Gelecekte bunu okuyabilecek herkes için daha açık olmak için cevabımı güncelleyeceğim. –