我正在尝试为一些集成测试设置元注释。这个测试工作正常。
@Test
@SqlGroup( {
@Sql(scripts = {"classpath:test/sql/customers/customers.sql",
"classpath:test/sql/orders/order_addresses.sql",
"classpath:test/sql/orders/order_contact_info.sql",
"classpath:test/sql/orders/orders.sql",
"classpath:test/sql/resetKeys.sql"}),
@Sql(scripts = {"classpath:test/sql/orders/delete_orders.sql",
"classpath:test/sql/customers/delete_customers.sql"}, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
})
public void testAddItemToOrder() throws Exception {
logger.entry();
Order order = orderService.findById(6l);
Assert.assertNotNull(order);
Assert.assertTrue(order.getOrderItems().isEmpty());
OrderItem orderItem = new OrderItem();
logger.exit();
}
然后我尝试创建一个元注释接口:
@Target(ElementType.METHOD)
@SqlGroup( {
@Sql(scripts = {"classpath:test/sql/customers/customers.sql",
"classpath:test/sql/orders/order_addresses.sql",
"classpath:test/sql/orders/order_contact_info.sql",
"classpath:test/sql/orders/orders.sql",
"classpath:test/sql/resetKeys.sql"}),
@Sql(scripts = {"classpath:test/sql/orders/delete_orders.sql",
"classpath:test/sql/customers/delete_customers.sql"}, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
})
public @interface SqlOrders {
}
但是,当我使用替换 SqlGroup 的注释运行相同的方法时,它会失败,因为没有加载 sql 数据。
@Test
@SqlOrders
public void testAddItemToOrder() throws Exception {
logger.entry();
Order order = orderService.findById(6l);
Assert.assertNotNull(order);
Assert.assertTrue(order.getOrderItems().isEmpty());
OrderItem orderItem = new OrderItem();
logger.exit();
}
pom.xml的相关部分如下,spring.version为4.2.1.RELEASE。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
有谁知道为什么没有使用元注释版本加载数据?