Spring data jpa repository Тестовый пример в памяти

В моем проекте я написал класс репозитория, для которого мне нужно написать тестовый класс в памяти. Мой код репозитория выглядит следующим образом.

package org.jaap.reference.repository;

import java.util.List;

import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.querydsl.QueryDslPredicateExecutor;
import org.springframework.stereotype.Repository;

import org.jaap.entity.AccountType;

/**
* Repository for type
*
*/
@Repository
public interface AccountTypeRepository
    extends JpaRepository<AccountType, Integer>, QueryDslPredicateExecutor<Type> {
/**
 * @param AccountTypeCode
 * @return List<Type>
 */

@Query("select T from AccountType T where T.AccountTypeCode not in ?#   {@environment.getProperty('commit.types').split(',')}")
List<AccountType> findByAccountTypeCodeNotIn(); 

}

для этого мне нужно написать тестовый блок с использованием junit, mockito кто-нибудь может мне помочь?

Ответы на вопрос(2)

Решение Вопроса

создав соединение базы данных In-Memory с Derby. Я сделал это с derby.

Тестовый класс

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=AccountTypeConfiguration.class)
public class AccountTypeServiceTest {
  private AccountTypeService accountTypeService;

  @Autowired
  private AccountTypeRepository accountTypeRepository;

  @Before
  public void init() {
     setUp("AccountType"); // Call configuration method with table name
     accountTypeService = new AccountTypeService(accountTypeRepository));
  }

  @Test
  public void testFindByAccountTypeCodeNotIn() {
     List<AccountType> accountTypes = accountTypeService.findByAccountTypeCodeNotIn();
     assertNotNull("AccountType Not null:",accountTypes);
     assertEquals("AccountTypes Size:",3, accountTypes.size());
  }

  // Database Configuration Methods

    protected void setUp(String... setupFiles) {
    MockitoAnnotations.initMocks(this);
    try {
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        Connection connection = DriverManager.getConnection("jdbc:derby:memory:testdb;create=true");
        for (String fileName : setupFiles) {
            ij.runScript(connection, getClass().getResourceAsStream("/sql/" + fileName + ".sql"), "UTF-8",
                    System.out, "UTF-8");
        }
    } catch (Exception e) {

    }
}

public static void remove() {
    try {
        DriverManager.getConnection("jdbc:derby:memory:testdb;drop=true").close();
    } catch (SQLNonTransientConnectionException ntce) {
    } catch (SQLException e) {
    }
}
}

этот пример кода поможет.

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes=AddressBookConfiguration.class)
    public class AddressServiceTests {

      @Autowired
      private AddressService addressService;

      @Test
      public void testService() {
        Address address = addressService.findByLastName("Sheman");
        assertEquals("P", address.getFirstName());
        assertEquals("Sherman", address.getLastName());
        assertEquals("42 Wallaby Way", address.getAddressLine1());
        assertEquals("Sydney", address.getCity());
        assertEquals("New South Wales", address.getState());
        assertEquals("2000", address.getPostCode());
      }
    }
 Bambaleylo02 апр. 2017 г., 20:17
Привет не помогло ...addressService  является нулевым ... Autowired не работает для меня .. Что я делаю не так?
 AdamIJK16 апр. 2017 г., 19:07
@georges van Я спросил о тесте в памяти, вставляя данные в базу данных, которая используется в памяти, и тестовые случаи с этим.
 AdamIJK19 апр. 2017 г., 06:31
@Sergey не используйте Autowired для класса обслуживания, просто объявите класс обслуживания и запустите контрольные примеры, надеюсь, он будет работать для вас.

Ваш ответ на вопрос