Aşağıdaki sınıfa sahibim:JMockit ile soyut sınıflardaki halka açık olmayan statik yöntemlere mi geçiyorsunuz?
public abstract class AbstractParent {
static String method() {
return "OriginalOutput";
}
}
Bu yöntemle dalga geçmek istiyorum. Xzx42 kullanmaya karar verdim. Ben bir alay sınıfı oluşturmak:
public class MockParent {
static String method() {
return "MOCK";
}
}
Ve benim test kodum şöyle görünüyor:
public class RealParentTest {
@Before
public void setUp() throws Exception {
Mockit.redefineMethods(AbstractParent.class, MockParent.class);
}
@Test
public void testMethod() {
assertEquals(MockParent.method(),AbstractParent.method());
}
}
Ne yazık ki bu test, AbstractParent'in "MOCK" yerine "OriginalOutput" döndürdüğünü söylüyor. Herhangi bir fikir neden? Yanlış bir şey mi yapıyorum? Sahte sınıfımı da soyut olarak ilan etmeyi denedim, boşuna.
Düzenleme Yöntemi kamuya açık hale getirmenin testin sorunsuz bir şekilde çalışmasına neden olduğunu unutmayın ... bu garip çünkü JMockit ile herhangi bir kapsamdaki yöntemlerle alay edebilmeniz gerekiyor.
Cevap Sadece sahte yöntem kamuya açık olmalı, orijinal yöntemi olduğu gibi bırakabilirsiniz.
Sadece geçen googler için ... kabul edilen cevap Mockit.redefineMethods'ın kullanımdan kaldırıldığı tarihte artık geçerli değil ... Doğruyu bulmaya çalışıyorum. –