Sadece basit bir test vakası çalıştırmaya çalışıyorum. Aşağıdaki yönteme sahibim.Powermock (With Easymock) Kullanışlı birimde son çağrı yok
public static void run(String[] args) throws Throwable {
CommandLineArguments opts = CommandLineOptionProcessor.getOpts(args);
}
Gittiğimde bu yöntemi/test vakasını oluşturmaya devam edeceğim. Ancak sadece basit bir test vakasının önce çalıştığından emin olmak istedim. Ben de şu testi yazdım.
@Test
public void testRun() {
String[] args = {"--arg1", "value", "--arg2", "value2"};
mockStatic(CommandLineOptionProcessor.class);
expect(CommandLineOptionProcessor.getOpts(args));
EasyMock.replay(CommandLineOptionProcessor.class);
}
Bundan sonra aşağıdaki hatayı alıyorum:
java.lang.IllegalStateException: no last call on a mock available
Ben StackOverflow'daki diğer bazı mesajlar okumak ama onların çözüm onlar Mockito ile PowerMock kullandığını gibi görünüyordu. Ben Powermock ve Easymock kullanıyorum, bu yüzden sorun olmamalı.
Rene'nin tavsiyelerini takip ettim ve dersimi ekledim.
@PrepareForTest(CommandLineOptionProcessor.class)
@RunWith(PowerMockRunner.class)
public class DataAssemblerTest {
Önceki hatayı düzelttim. Ama şimdi bu hatayı aldım.
java.lang.IllegalArgumentException: Not a mock: java.lang.Class
at org.easymock.internal.ClassExtensionHelper.getControl(ClassExtensionHelper.java:61)
at org.easymock.EasyMock.getControl(EasyMock.java:2172)
at org.easymock.EasyMock.replay(EasyMock.java:2074)
.
.
.
Bunun neden olabileceği konusunda herhangi bir fikir harika olurdu.
Eğer maven kullanıyor musunuz:
de size bu sınıf test ekleyin? –
Hayır. Şu anda Maven kullanmıyorum. –
@ RenéLink Sorunu JavaAssist ile düzelttim. Çıktı, projede kütüphaneye henüz sahip değildim. Yani bu şimdi iyi. Ancak, şimdi 'alay değil' yazan bu yeni sorun var. –