Весенние тесты junit с диваном

У меня есть несколько сервисов, которые должны получать документы с дивана.

Услуги:

    public List<Doc> findByFirstField( String firstFieldValue )
    {
        Query query = new Query();
        query.setKey( ComplexKey.of( firstFieldValue ) );
        List<Doc> docs = (List<Doc>) docRepository.findFirstField( query );
        return docs;
    }

    public List<Doc> findBySecondField( String secondFieldValue )
    {
        Query query = new Query();
        query.setKey( ComplexKey.of( secondFieldValue ) );
        List<Doc> docs = (List<Doc>) docRepository.findSecondField( query );
        return docs;
    }

Так же у меня есть интерфейс DocRepository с необходимыми методами и представлениями на диванном сервере. Когда я запускаю свое приложение и вызываю службы, все работает нормально, но мне нужны тесты для этих служб.

Тесты:

@RunWith( SpringJUnit4ClassRunner.class )
@TestExecutionListeners( listeners = { DependencyInjectionTestExecutionListener.class } )
@ContextConfiguration( classes = {CouchbaseConfig.class, DocServiceImplTest.class, DocServiceImpl.class } )
@Configuration

    @Before
    public void CreateDoc()
        throws InterruptedException
    {
        HashMap<String, String> docInfo = new HashMap<String, String>();
        docInfo.put( "docId", "testDoc" );
        docInfo.put( "field1", "value1" );
        docInfo.put( "field2", "value2" );
        docService.saveDoc( docInfo );
    }

    @After
    public  void deleteTestsDoc()
    {
        docService.deleteDoc( "testDoc" );
    }

    @Test
    public void testFindByField1()
    {
        Doc doc = docService.findByFirstField( "value1" );
        assertEquals( "value1", doc.getFirstField() );
    }

    @Test
    public void testFindByField2()
    {
        Doc doc = docService.findBySecondField( "value2" );
        assertEquals( "value2", doc.getSecondField() );
    }

Запущенные тесты успешны только в 90%. И еще момент, я использую maven, и когда он запускает тесты проекта, он всегда терпит неудачу...

Кто-нибудь может что-нибудь посоветовать, как написать тест для работы с диваном.


person Cuzz    schedule 23.12.2014    source источник
comment
Опубликуйте, какие ошибки вы получили, а также весь ваш тестовый файл.   -  person scalabilitysolved    schedule 23.12.2014
comment
сбои: doc.getFirstField() заканчивается нулевым указателем doc. так что делаю вывод, что док не найден на диване просмотром.   -  person Cuzz    schedule 23.12.2014


Ответы (1)


Проблема решена. Причина заключалась в том, что после того, как документ был добавлен в представление Couchbase, он не обновлялся. Так что просто нужно добавить

query.setStale( Stale.FALSE );

Представление будет обновляться перед получением данных.

person Cuzz    schedule 24.12.2014