Tôi đang cố gắng để kết hợp các chú thích sau:Làm thế nào để thực hiện @Sql trước một phương pháp @Before
org.springframework.test.context.jdbc.Sql và org.junit.Before
Giống như các mã sau:
@Test
@Sql(scripts = "dml-parametro.sql")
public void testData(){
Iterable<Parametro> parametros = parametroService.findAll();
List<Parametro> parametrosList = Lists.newArrayList(parametros);
Assert.assertThat(parametrosList.size(), Is.is(1));
}
@Before
public void beforeMethod() {
JdbcTestUtils.deleteFromTables(jdbcTemplate, "PARAMETRO");
}
mã trong phương pháp @Before đang chạy sau đó kịch bản "DML-parametro.sql" trong chú thích @Sql.
Có quyền làm điều này?
Đối với giải pháp này, tôi đang sử dụng @After tại chỗ hơn @Before, nhưng tôi muốn cdelete bảng trước khi thực hiện kiểm tra, chứ không phải sau.
tôi sẽ không muốn sử dụng @SqlConfig. Tôi không sử dụng phạm vi transacional trên cấp độ thử nghiệm, vì vậy tôi cần phải làm sạch bảng của tôi trong mọi phương pháp thử nghiệm. Nếu mọi phương pháp thử cần phải làm sạch bảng, tôi muốn làm điều này trong phương thức @Trước. Tôi không muốn làm điều này trong mọi phương pháp thử nghiệm với @SqlConfig. Tôi nghĩ rằng hành vi của @Sql được thực hiện trước khi @Trước là sai.
tôi có một lớp trừu tượng được chú thích bằng '@ Sql' chạy một số tập lệnh và một lớp con của nó cũng được chú thích bằng' @ Sql'. khi tôi chạy spring boot 1.2, mọi thứ hoạt động như mong đợi -> các kịch bản lớp trừu tượng được chạy trước các scipts lớp con. nhưng một khi tôi nâng cấp lên khởi động mùa xuân 1.3, lớp con '@ Sql' bắt đầu ghi đè' 'Sql' của lớp cha trừu tượng và do đó các kịch bản lớp cha mẹ không bao giờ chạy. Tôi không biết phải làm gì bây giờ:/ –
Tôi đã tạo một câu hỏi cho điều này, được tìm thấy ở đây: http://stackoverflow.com/questions/39296329/sub-classing-sql-annotated-class –