0
我正在嘗試在我的Spring Boot應用程序中編寫集成測試。我在安裝配置時遇到問題。以下異常被拋出:春季測試+ DBUnit無法加載數據集
java.lang.IllegalArgumentException: Unable to load dataset from "sampleData.xml" using class com.github.springtestdbunit.dataset.FlatXmlDataSetLoader
事情我已經嘗試:
- 更改sampleData.xml文件的名稱。
- 使用value =「」符號。
- 使用classpath:在文件名之前。
- 在文件名之前使用附加的「/」。
sampleData.xml與我的測試類位於同一個目錄中。我想我錯過了一些愚蠢的東西。
sampleData.xml:
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<Benutzer userId="1" firstName="peter" lastName="pan" email="[email protected]"/>
<Benutzer userId="2" firstName="hans" lastName="wurst" email="[email protected]"/>
</dataset>
BenutzerVerwaltungsIntegrationsTest:
RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = WebDelegatingSmartContextLoader.class, classes = {ExampleApplicationContext.class})
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class,
TransactionalTestExecutionListener.class,
DbUnitTestExecutionListener.class})
@DatabaseSetup("sampleData.xml")
@WebAppConfiguration
public class BenutzerverwaltungIntegrationTest {
@Resource
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
@Test
@ExpectedDatabase("sampleData.xml")
public void findAll() throws Exception {
mockMvc.perform(get("/verwaltung"))
.andExpect(status().isOk())
.andExpect(forwardedUrl("/WEB-INF/jsp/verwaltung.jsp"))
.andExpect(model().attribute("Benutzer", hasSize(2)))
.andExpect(model().attribute("Benutzer", hasItem(
allOf(
hasProperty("userId", is(1l)),
hasProperty("firstName", is("peter")),
hasProperty("lastName", is("pan")),
hasProperty("email", is("[email protected]"))
)
)))
.andExpect(model().attribute("Benutzer", hasItem(
allOf(
hasProperty("userid", is(2l)),
hasProperty("firstName", is("Hans")),
hasProperty("lastName", is("Wurst")),
hasProperty("email", is("[email protected]"))
)
)));
}
}
ExampleApplicationContext:
@Configuration
@PropertySource("classpath:application.properties")
public class ExampleApplicationContext {
@Resource
private Environment environment;
@Bean
public DataSource dataSource(){
JdbcDataSource dataSource = new JdbcDataSource();
dataSource.setURL(environment.getProperty("spring.datasource.url"));
dataSource.setUser(environment.getProperty("spring.datasource.username"));
dataSource.setPassword(environment.getProperty("spring.datasource.password"));
return dataSource;
}
}
xml文件應該放在'src/test/resources'而不是'src/test/java'中,將它移動到正確的位置。 –
試過了。沒有改變。這可能是我的pom.xml的問題嗎? – user1651804
不,但你的xml應該在資源路徑而不是java路徑。如果你在後者有它,它不會被複制到目標文件夾。在將它移動到資源時,您是否保留了目錄結構或將其直接移到了資源中? –