среда, 25 мая 2011 г.

JUnit Tests with Spring Beans

Ну что же, немного JUnit4 чтобы не забыть как я это делал :)
Собственно тестируется в 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));
    }

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

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