Java Easymock жалуется на "java.lang.illegalstateException: метод void не может вернуть значение" или "без последнего выJAVA

Программисты JAVA общаются здесь
Anonymous
Java Easymock жалуется на "java.lang.illegalstateException: метод void не может вернуть значение" или "без последнего вы

Сообщение Anonymous »

Мы используем EasyMock для Junit Testsing нашего Java Application в Eclipse. Используя код, аналогичный ниже, мы обнаружили странное поведение: при запуске полного набора тестов (проект Eclipse -> Run as -> junit) один тестовый пример не выполняется воспроизводимо. Однако при автономном запуска он работает нормально. < /P>

Интерфейс: < /p>

package de.zefiro.java.easymockexception;

public interface Fruit {
public String fall();
}
< /code>

тестовый класс: < /p>

package de.zefiro.java.easymockexception;

import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.junit.Assert.assertTrue;

import org.junit.BeforeClass;
import org.junit.Test;

public class Newton {
private static final Fruit APPLE = createNiceMock(Fruit.class);

@BeforeClass
public static void SetUpClass() {
expect(APPLE.fall()).andReturn("Targeting HEAD").anyTimes();
replay(APPLE);
}

@Test
public void testGravity() {
String target = APPLE.fall();
assertTrue("Missed", target.contains("HEAD"));
}
}
< /code>

Test Suite: < /p>

package de.zefiro.java.easymockexception;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(value = Suite.class)
@SuiteClasses( { Newton.class } )
public class ScienceTests { }
< /code>

Запуск всех тестов в проекте Eclipse - т.е. оба ScienceTests Calling Newton, а также Newton напрямую - создали это исключение в приведенном выше небольшом примере: < /p>

java.lang.IllegalStateException: no last call on a mock available
at org.easymock.Easymock.getControlForLastCall(EasyMock.java:175)
< /code>

Здесь есть аналогичный вопрос, но он кажется не связанным.java.lang.IllegalStateException: void method cannot return a value
at org.easymock.internal.MocksControl.andReturn(MocksControl.java:101)
< /code>

Я не нашел ответа ни в Google, ни здесь на Stackoverflow, но теперь узнал себя, поэтому в духе ответа на ваши собственные вопросы я опубликую свои выводы ниже. Стоит также упомянуть, что я обнаружил, что в данном конкретном случае это не помогло: EasyMock причинно-следственное отображение

Подробнее здесь: https://stackoverflow.com/questions/100 ... thod-canno

Вернуться в «JAVA»