Ну что же, немного JUnit4 чтобы не забыть как я это делал :)
Собственно тестируется в Eclipse, ну и можно просмотреть как Класс должен себя вести в зависимости от той или иной ситуации. Ну и поскольку в проекте активно используется Spring - как то нужно создавать бины для него и затаскивать их в тесты именно для этого и нужно Mockery Итак пример кода:
Класс с которым это все запускается
Собственно тестируется в Eclipse, ну и можно просмотреть как Класс должен себя вести в зависимости от той или иной ситуации. Ну и поскольку в проекте активно используется Spring - как то нужно создавать бины для него и затаскивать их в тесты именно для этого и нужно Mockery Итак пример кода:
Класс с которым это все запускается
/**
* Runner which randomizes order of execution of the tests in case.
* This helps to prevent dependency between order of execution of individual tests.
* Should be used ONLY for JUnit4 tests!
*
*/
public class TestRunner extends JUnit4ClassRunner {
public TestRunner(Class< ? > klass) throws InitializationError {
super(klass);
}
protected List getTestMethods() {
List methods = super.getTestMethods();
Collections.shuffle(methods);
return methods;
}
}
Ну и сам класс с тестом (1-2 метода)import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
@RunWith(TestRunner.class)
public class BenchmarkBPImplTest {
private Mockery context = new JUnit4Mockery();
private BenchmarkBPImpl benchmarkBPImpl;
private PortfolioDAO portfolioDAOMock;
private MyRatingsDAO myRatingsDAOMock;
private CalcTreeBP calcTreeBPMock;
private Portfolio portfolio;
private CalcTreeNode ewrNode;
private CalcTreeNode rootNode;
private CalcTreeNode userNode;
private CalcTreeNode userNodeInaccessible;
private UserCalcTreeNode userRating;
private UserCalcTreeNode userRatingInaccessible;
private Indicator userIndicator;
private Indicator rootIndicator;
private BenchmarkInfo validBenchmarkInfo;
@Before
public void setUp() throws Exception {
calcTreeBPMock = context.mock(CalcTreeBP.class);
myRatingsDAOMock = context.mock(MyRatingsDAO.class);
portfolioDAOMock = context.mock(PortfolioDAO.class);
benchmarkBPImpl = new BenchmarkBPImpl();
benchmarkBPImpl.setMyRatingsDAO(myRatingsDAOMock);
benchmarkBPImpl.setPortfolioDAO(portfolioDAOMock);
/*Тут устанавливаем значения объектов на
которых будем тестировать методы */
}
@Test
public void getBenchmarkStringFromRootNodeNullTest(){
context.checking(new Expectations(){{
one(calcTreeBPMock).get(rootNode.getId());
will(returnValue(rootNode));
}});
context.checking(new Expectations(){{
one(myRatingsDAOMock).getMyRatingByRootCalcTreeNodeId(rootNode.getId());
will(returnValue(null));
}});
assertNull(benchmarkBPImpl.getBenchmarkString(rootNode));
}
@Test
public void getBenchmarkStringTest(){
context.checking(new Expectations(){{
one(calcTreeBPMock).get(userNode.getId());
will(returnValue(userNode));
}});
assertEquals(userNode.getIndicatorEx().getBenchmark(),
benchmarkBPImpl.getBenchmarkString(userNode));
}
@Test
public void fromStringA4UTest(){
String benchmarkString = new String();
Integer year = 2010;
validBenchmarkInfo = new BenchmarkInfo(ValueScope.TYPE.A4U, year);
assertEquals(validBenchmarkInfo,
benchmarkBPImpl.fromString(benchmarkString, year));
}
Комментариев нет:
Отправить комментарий