2016-11-05 81 views
1

我熟悉Spring数据JPA和我测试用这种声明的库(春季4):集成测试与Spring引导和MySQL

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = {PersistenceConfig.class}) 
@Sql({"classpath:it-data.sql"}) 
public class MyRepositoryIT { 

    @Autowired 
    private MyRepository repository; 

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

所以我负责创建MySQL的模式和表但测试类会插入测试数据(it-data.sql),而src/test/resources/persistence.properties包含数据源配置。

现在我想在Spring Boot项目中做同样的事情。我编写了一个简单的项目(一个Controller使用服务来检索数据,这要归功于从Repository获取来自MySQL数据库的数据)。
问题是我无法编写一个简单的测试,只测试存储库(我不想加载整个应用程序只是为了测试存储库),我得到上下文错误或数据源配置错误。

@RunWith(SpringRunner.class) 
public class MyRepositoryIT { 

    @Autowired 
    private MyRepository repository; 

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

启动和复制src/main/resources/application.propertiessrc/test/resources/application.properties(只是改变了架构名称),我使用@DataJpaTest@ContextConfiguration(classes = Application.class)@Sql@SpringBootTest@AutoConfigureTestDatabase@DatabaseSetup等,但没有任何作品试图万吨组合。

因此,知道我有一个MySQL数据库,该数据库已经存在于我的测试中,我应该使用什么注释来向其中插入数据,然后测试自动装载的存储库?
谢谢。

回答

0

您应该mock所有您要测试的类使用的类。您可以使用像mockito这样的工具。

+0

存储库集成测试,所以没有什么嘲笑;-) –