Tôi có số lượng lớn các trường hợp thử nghiệm chạy với Hỗ trợ Spring Junit với các chú thích sau trên mỗi Bài kiểm tra.Cách tạo và sử dụng chú thích tùy chỉnh có chú thích cấu hình Spring + JUnit Test Config?
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring/applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
@ActiveProfiles("test")
Thay vì đặt tất cả chú thích này vào mỗi lớp Kiểm tra tôi muốn tạo chú thích tùy chỉnh và sử dụng chú thích.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring/applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
@ActiveProfiles("test")
@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface SpringJUnit4TestConfig {
}
Nhưng khi tôi sử dụng tùy chọn này, chú thích Spring Injection không xảy ra.
@SpringJUnit4TestConfig
public class UserServiceTest
{
}
Tôi thiếu gì ở đây?
PS: Nhưng JUnit's @RunWith và Spring's @Transactional, @ContextConfiguration đều có @ Inherited..So tôi nghĩ nó sẽ hoạt động. Nhưng bây giờ tôi vượt qua nó thông qua một công việc xung quanh. Tạo một lớp Tóm tắt dựa trên và đặt tất cả các chú thích trên đó và các trường hợp thử nghiệm mở rộng lớp cơ sở đó.
Tôi chỉ nên sử dụng @Target ({ElementType.TYPE}) Tôi không nghĩ rằng bạn sẽ sử dụng điều này trong một trường hoặc thông số hoặc bạn? – Koitoer
Bạn nói đúng. Chú thích tùy chỉnh này chỉ nên được áp dụng trên ElementType.TYPE. –
Tôi cũng muốn làm chính xác như vậy. Đọc câu hỏi và câu trả lời Tôi đã tạo chú thích sử dụng tất cả các cấu hình ngoại trừ '@ RunWith' và có vẻ hoạt động tốt cho đến nay. Tôi sử dụng '@RunWith (SpringJUnit4ClassRunner.class)' trên mỗi lớp TestCase. – ykesh