2

Spring Boot 1.4.4 を使用しています。単体テストについては、Spring Boot Testの記事に従いました。カスタム リポジトリがある場合、テストが機能せず、エラーで失敗しますUnsatisfiedDependencyException: Error creating bean with name 'com.jay.UserRepositoryTest': Unsatisfied dependency expressed through field 'userRepository';

ここに私のコードがあります、

@Repository
@Transactional
public class UserRepository  {

  @Autowired
  private EntityManager entityManager;

  // sample code for custom repo. can be done easily in CrudRepo
  public User findUser(String name){

    TypedQuery<User> q = entityManager.createQuery("Select u from User u Where u.name = :name", User.class);
    q.setParameter("name", name);

    return q.getSingleResult();
  }
}

@RunWith(SpringRunner.class)
@DataJpaTest
public class UserRepositoryTest {

  @Autowired
  private TestEntityManager entityManager;

  @Autowired
  private UserRepository userRepository;

  @Test
  public void findUserTest(){
    ...
  }
}

しかし、構成を変更せずに、Spring Boot で次の Dao をテストできます。

@Transactional
public interface UserDao extends CrudRepository<User, Long> {

  User findByEmail(String email);
}

を使用しているときは@SpringBootTest、注入できますがUserRepository、できませんTestEntityManager

4

1 に答える 1