Spring mvc Spring@SqlGroup元注释不工作
我正在尝试为一些集成测试设置一个元注释。这个测试很好Spring mvc Spring@SqlGroup元注释不工作,spring-mvc,spring-mvc-test,Spring Mvc,Spring Mvc Test,我正在尝试为一些集成测试设置一个元注释。这个测试很好 @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",
@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>
org.springframework
spring上下文支持
${spring.version}
org.springframework
spring上下文
${spring.version}
org.springframework
弹簧网
${spring.version}
org.springframework
SpringWebMVC
${spring.version}
org.springframework
弹簧试验
${spring.version}
测试
有人知道为什么数据没有加载元注释版本吗?您的
@SqlOrders
注释没有@Retention
,默认值是RetentionPolicy.CLASS
,因此Spring在运行时找不到您的注释。
添加@Retention(RetentionPolicy.RUNTIME)
,它应该可以工作
您还可以调试
sqlscriptstexecutionListener
,以了解Spring对您的批注做了什么。您的@SqlOrders
批注没有@Retention
,默认值为RetentionPolicy.CLASS
,因此Spring在运行时无法找到您的批注。
添加@Retention(RetentionPolicy.RUNTIME)
,它应该可以工作
您还可以调试sqlscriptstexecutionListener
,以了解Spring对注释的作用