EasyMock - użycie mocków w pętli

0

Cześć,

Chciałbym testować w pętli kilka przypadków. Za każdym razem* EasyMock.expect(...) * ma otrzymać obiekt, który za każdą iteracją jest tworzony na nowo.
Po pierwszej iteracji wszystko jest ok, ale następna nie przechodzi, dostaję java.lang.IllegalStateException: incompatible return value type
Mock ma tylko zwrócić boolean.

Ktoś ma na to jakiś pomysł?

0

Pokaż kod :)

0
	@RunWith(EasyMockRunner.class)
	public class ItemExchange {
		@Before
		public void setUp() {
			item.setType(ITEM_01);
		}

	@Test
	public void changeItemTypes() throws CheckException{
        ItemContainer container = new ItemContainer();
        ...
        for(Item i : container){
	        EasyMock.expect(mockChangeDecision.procceed(itemEntity, itemEntity.getDecision())).andReturn(true);
			EasyMock.replay(mockChangeDecision);
	        ...
			assertItems(itemEntity, decision);
        	}
	     }
	}

Problem pewnie polega na tym, że EasyMock jest statyczną klasą z finalami. Jak można to rozwiązać, żeby mi taki foreach działał? :)

0

Problem pewnie polega na tym, że EasyMock jest statyczną klasą z finalami. Jak można to rozwiązać, żeby mi taki foreach działał?

? o_O
Przecież mozesz stworzyć sobie obiekt Mock albo w ogóle jakieś MockControl.
Ale nie wiadomo co ten twój test ma sprawdzać. Ja obstawiam ze nie sprawdza absolutnie nic, poza tym czy mocki działają.

0

Działają. To oczywiście uproszczony fragment. Chodzi głównie o wykonanie EasyMock.expect(...) i EasyMock.replay(...) w pętli. Pierwsza iteracja przechodzi bez problemu. Kolejna, jak pisałem, rzuca incompatible return value type. Dzięki za naprowadzenie na MockControl. Poczytam i spróbuję coś z tego uszyć. :)

0

Bo w petli to nie ma sensu za bardzo. Najpierw nagrywa się zachowanie a potem je testuje. Słyszałeś o podejściu given, when, then? Bo mam wrażenie że twój test nie dość że niczego nie sprawdzi to jeszcze będzie zupełnie nieczytelny...

0

(Może powinienem zaznaczyć, że jestem początkującym programistą)

Test jest zasilany danymi z xlsx. W pewnym katalogu są pliki i zrobiłem odczyt tych plików, aby dane z nich mogły zasilić test. Chcę dla każdego zestawu danych robić oddzielną iterację testu. Ktoś kto nie jest programistą, mógłby wrzucać swój plik z danymi do tego katalogu i test wykonywał by się z danymi z każdego pliku. Jeden po drugim.

0

Odpuszczam sobie. Dziękuję za chęci pomocy i miłą atmosferę. Pozdrawiam.

0

Takie coś o co pytasz robi się testami parametryzowanymi. Jak będę miał coś więcej niż komputer pod ręką to wrzucę przykład.

0

Mocki da się resetować, zdaje się jest to po prostu metoda reset(). Może tego szukasz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1