2016-11-05 117 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

存儲庫集成測試,所以沒有什麼嘲笑;-) –