首页 > 解决方案 > 使用 JPA 保存数据的 Junit 测试

问题描述

我正在尝试进行 junit 测试以使用 JPA 保存数据。下面是我的实体类

@Entity
@Table(name="book")
public class test {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="BOOK_REF_ID",nullable=false)
private int bookRefId;
@Column(name="BOOK_CODE",nullable=false)
private String bookCode;
@Column(name="BOOK_NAME",nullable=false)
private String bookDescription;

public int getBookRefId() {
    return bookRefId;
}
public void setBookRefId(int bookRefId) {
    this.bookRefId = bookRefId;
}
public String getBookCode() {
    return bookCode;
}
public void setBookCode(String bookCode) {
    this.bookCode = bookCode;
}
public String getBookDescription() {
    return bookDescription;
}
public void setBookDescription(String bookDescription) {
    this.bookDescription = bookDescription;
}
}

服务等级是

public interface BookService()
    {
     public Book create(Book book); 
    }

存储库类是

    public interface BookRepository extends 
    JpaRepository<Book,Integer>
    {  }

服务实现类是

    public BookServiceImpli implements BookService()
    {
     @Resource
     BookRepository repository;
    @Override
    public Book create(Book book) {
    // TODO Auto-generated method stub
    return repository.save(book);
    }
    }

现在我的测试课是

    @RunWith(SpringRunner.class)
    @DataJpaTest
    @SpringBootTest(classes= {JPAConfig.class})
    @AutoConfigureTestDatabase(replace=Replace.NONE)
    @TestPropertySource(
      locations = "classpath:application.properties")
    public class TestBook {
    @Autowired
    private BookService bookService ;
    @Test
    public void test() {
    Book book = new Book();
    book.setBookCode("abc");
    book.setBookDescription("safd");
    bookService.create(book);
    }

应用程序属性包含密码和数据库详细信息,而 JPAConfig 包含 JPA 配置详细信息,例如实体扫描数据库详细信息。当我试图运行测试用例时,我得到了一个错误,比如

     A component required a bean of type 
    'com.repository.sample.BookRepository' that could not be found.

我没有主要方法。我是单元测试的新手,请任何人帮助我解决问题。

标签: springjpajunit

解决方案


推荐阅读