Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

среда, 9 марта 2011 г.

Junit хитрости: Пишем EasyMockRunner

Задача такая: некий объект
public class SomeObject {
 private Dependency dependency;

 void setDependency(Dependency dependency) {
  this.dependency = dependency;
 }

 public String callToDependency() {
  return dependency.callFromSomeObject();
 }
}
зависим от
public interface Dependency {
 String callFromSomeObject();
}
Есть классический способ написать EasyMock тест вот так
import static org.junit.Assert.*;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;

public class SomeObjectTest {
 public Dependency dependency;
 public SomeObject someObject;

 @Before
 public void setUp() {
  someObject = new SomeObject();
  dependency = EasyMock.createMock(Dependency.class);
  someObject.setDependency(dependency);
 }

 @Test
 public void testThatItMocksDependency() {
  EasyMock.expect(dependency.callFromSomeObject()).andReturn("Hello");

  EasyMock.replay(dependency);
  assertEquals("Hello", someObject.callToDependency());
  EasyMock.verify(dependency);
 }
}
Но хочется как-то так
import static org.junit.Assert.*;
import org.easymock.EasyMock;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(EasyMockRunner.class)
public class SomeObjectMockTest {

 @Mock
 private Dependency dependency;
 
 @TestObject
 private SomeObject someObject;

 @Test
 public void testThatItMocksDependency() {
  EasyMock.expect(dependency.callFromSomeObject()).andReturn("Hello");

  CurrentMocks.replay();
  assertEquals("Hello", someObject.callToDependency());
 }
}
Задачка хорошо так взбодрила меня сегодня. Спасибо Автору вот этого вот поста.
Ответ у меня уже готов. Выложу позже. Все желающие - подключайтесь.

Комментариев нет:

Отправить комментарий