2015-02-23 25 views
5

Kısa bir süre önce jMock 2.5.1'den 2.6.0'a yükseltilmiş ve bazı bağımlılıkları değişmiş gibi görünüyor, bu da bazı eski testlerimin başarısız olmasına neden oluyor.jMock ile ilgili beklentiler Nesne veya boş değerlere izin verme

benim test paketi olarak

oneOf(service).event(with(any(Long.class)));

, event hem null ve geçerli Long değerlerle çağrılan: my testlerin

Bir kaç testlerin ortak kurulumu için kullanılan aşağıdaki beklenti vardır. Bu JMock 2.5.1 mükemmel kabul edilebilir olması için kullanılır, ancak yükseltmeden sonra, ben şu istisna olsun: Ben bunun nedeni hamcrest yeni sürümüne olabilir şüpheli

java.lang.AssertionError: unexpected invocation: service.event(null) 
expectations: 
    expected once, never invoked: service.event(an instance of java.lang.Long) 
what happened before this: 
    locator.locateService() 
    service.getService() 
at org.jmock.api.ExpectationError.unexpected(ExpectationError.java:23) 
at org.jmock.internal.InvocationDispatcher.dispatch(InvocationDispatcher.java:85) 
at org.jmock.Mockery.dispatch(Mockery.java:231) 
at org.jmock.Mockery.access$100(Mockery.java:29) 
at org.jmock.Mockery$MockObject.invoke(Mockery.java:271) 
at org.jmock.internal.InvocationDiverter.invoke(InvocationDiverter.java:27) 
at org.jmock.internal.FakeObjectMethods.invoke(FakeObjectMethods.java:38) 
at org.jmock.lib.concurrent.Synchroniser.synchroniseInvocation(Synchroniser.java:82) 
at org.jmock.lib.concurrent.Synchroniser.access$000(Synchroniser.java:23) 
at org.jmock.lib.concurrent.Synchroniser$1.invoke(Synchroniser.java:74) 
at org.jmock.lib.JavaReflectionImposteriser$1.invoke(JavaReflectionImposteriser.java:33) 
at com.sun.proxy.$Proxy27.system(Unknown Source) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

o JMock 2.6.0 kullandığı ancak Emin değilim. Bu yöntem için hem null hem de null olmayan değerleri belirtmek için kullanabileceğim daha uygun bir eşleyici var mı?

cevap

3

Biraz araştırma yaptıktan sonra jMock 2.5 -> 2.6'dan known change in functionality olduğunu öğrendim.

Bulduğum geçici çözüm, boş ve boş olmayan değerler ile eşleşen with.is(anything()) kullanmaktır.

+0

Küçük bir sürümde kırılma değişikliklerini görmek güzel ... –

+0

Teşekkür ederim, bunu yapmak için çok uzun zamandır bakıyordum. Benim için sözdizimi, (bir şey()) ile olsa da (Uzun) idi. – neXus

İlgili konular