如何在Spring启动中集成测试库

时间:2017-09-11 11:02:03

标签: java mysql spring integration-testing

我是Spring Boot的新手,是我的第一个实体。我该如何测试存储库? 我正在使用本地MySQL数据库。那么第一步是嘲笑数据库吗?

main2.cc

这是我的群集实体

labels: {
  items: [{
   useHTML: true, // Using HTML for label
    //html: "Transactions",
    html: '<img src="https://github.com/tobi-ajala/shell-exercise/blob/master/icons/card.png?raw=true"/>' + "Transactions", // Doesn't work!
    style: {
      fontFamily: 'Arial,Roboto,Helvetica,sans-serif',
      fontWeight: 'bold',
      fontSize: 14,
      verticalAlign: 'middle',
      top: 140,
      left: 460
    }
  }]
},

我的存储库只是扩展了JpaRepository。

我得到的错误是java.lang.IllegalStateException:无法加载ApplicationContext。而且有点失落:无法用嵌入式数据库替换DataSource进行测试。如果你想要一个嵌入式数据库,请在类路径上放置一个受支持的数据库,或者调整@AutoconfigureTestDatabase的replace属性。

这是我的src / main / resources / application.properties中的application.properties文件:

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

        @Autowired
        private TestEntityManager testEntityManager;

        @Autowired
        private ClusterRepository clusterRepository;

        @Test
        public void testExample() throws Exception{
            this.testEntityManager.persist(new Cluster("Project", "System"));
Cluster cluster = this.clusterRepository.findOne(1);
            assertThat(testcluster.getProject()).isEqualTo("System");
        }

    }

我将此文件复制到我的src / test / resources / application.properties

错误

@Entity
@Table(name = "Cluster")
public class Cluster {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    private String project;

    public Cluster(){

    }

    public Cluster(String project) {
        this.project = project;

    }

1 个答案:

答案 0 :(得分:2)

@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = NONE)
public class ClusterTests {

@Autowired
    private TestEntityManager entityManager;

    @Autowired
    private ClusterRepository clusterRepository;
}

这应该可以解决内存数据库的生成问题。最好的方法是使用内存数据库来保存实体,但另一个好方法是直接使用数据库。通过使用@AutoConfigureTestDatabase(replace = NONE),您可以告诉spring不要替换数据源。

希望有所帮助