ดั้งเดิม
ฉันกำลังพยายามโหลดในการทดสอบของฤดูใบไม้ผลิบูต(v2.3.8)โปรแกรม เดียวที่ชื่อ ส่วนประกอบใน พื้นฐาน ฤดูใบไม้ผลิโปรแกรมคอนเท็กซ์. ยิ่งไปกว่านั้นฉันต้องการที่จะโหลดในการทดสอบเป็นฤดูใบไม้ผลิโปรแกรมคอนเท็กซ์นั่น configures อย่างน้อยการทำปูมบันทึก,กำลังโหลดของคุณสมบัติต่างๆของเว็บเบราว์เซอร์ภายนอก,การตรวจสอบ(ผ่านของจาวาการตรวจสอบรูปแบบ api)และ @Value
-plugging แต่ถ้าไม่มี MVC,ข้อมูล JPA เป็นต้น ในสำคัญฉันต้องการเพื่อการทดสอบผ่าน constraint-annotated ส่วนเชื่อมต่อ(e.g. @NotBlank
)เป็น @Service
นั่นฝึกซ้อมกันเพียงแฟ้มในระบบ-ของระบบ(ไม่มี MVC,ข้อมูล JPA หรืออื่นฤดูใบไม้ผลิบูททดสอบ"ชิ้น"และมีข้อมูล-สมาชิก populated ผ่าน @Value
.
ฉันพยายามที่จะไม่ avail,มีหมายเหตุประกอบ(และบางคนของพวกเขา inherent แอททริบิวต์ต่างๆ)ในแตกต่างกับส่วนผสม-subsets:e.g. @SpringBootTest
, @Configuration
, @ContextConfiguration
, @TestConfiguration
, @TypeExcludeFilters
เป็นต้น สำหรับตัวอย่าง:
@Validated
public interface SomeService {
String someMethod (@NotBlank String someParam);
}
...
@Service
public class SomeServiceImpl implements SomeService {
@Value("${some.value}")
private String someValue;
@Override
public String someMethod(String someParam) {
// do something with local file-system,
// with someValue in hand, and
// knowing someParam not blank
}
}
...
@SpringBootTest(classes={SomeServiceImpl.class},webEnvironment=WebEnvironment.NONE)
class SomeServiceTests {
@Autowired
private SomeService someService;
@Test
void throwConstraintViolationException_whenSomeParamNil() {
assertThrows(
ConstraintViolationException.class,
()->someService.someMethod(new String()));
}
...
}
ในนี้ตัวอย่างแอททริบิวต์ classes
ของ @SpringBootTest
จริงเชียวที่ cited เรียนแต่ obscures ทั้งหมดของ พื้นฐาน (การทำปูมบันทึก,การตรวจสอบเป็นต้น) ฉันยันการค้นหา.
ต่อไปนี้ excerpt จากได้เวลาเผชิญหน้าความจริงกำแพง'"ฤดูใบไม้ผลิองเท้าบู๊ทที่แอ็คชั่น"ดูเหมือนจะเป็น สิ่ง ที่ฉันค้นหาแต่มันหลักเครื่องมือ(@SpringApplicationConfiguration
)คือตอนนี้ deprecated(และมันอย่างเป็นทางการ-ขอแนะนำให้แทนที่- @SpringBootTest
-มันไม่ทำตัวอย่างเท่าเทียมกันอย่างน้อยเกี่ยวกับแอททริบิวต์ classes
):
ถึงแม้ว่า@ContextConfiguration ทำหน้าที่ได้ยอดเยี่ยมมาขอการโหลดโปรแกรมฤดูใบไม้ผลิ คอนเท็กซ์ไม่ได้เรียกใช้มันกับเต็มไปด้วฤดูใบไม้ผลิบูทการรักษา...SpringApplication ไม่เพียงแค่ความโปรแกรมคอนเท็กซ์แต่ยังเปิดใช้การทำปูมบันทึกที่กำลังโหลดของเว็บเบราว์เซอร์ภายนอก คุณสมบัติของ(โปรแกรมคุณสมบัติของหรือโปรแกรมyml),และคนอื่นๆที่มีคุณสมบัติของฤดูใบไม้ผลิ รองเท้าบูท ถ้าคุณกำลังใช้@ContextConfiguration คุณจะไม่เข้าใจพวกนั้นมีคุณสมบัติ. เพื่อให้พวกคุณสมบัติต่างๆกลับเข้าร่วมการทดสอบ,คุณสามารถเปลี่ยนออก@ContextConfiguration สำหรับฤดูการบูตเป็น@SpringApplicationConfiguration:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes=AddressBookConfiguration.class)
public class AddressServiceTests {
...
}
เขาจะได้รับ"มฤดูใบไม้ผลิบูทการรักษาแต่การเพิ่ม เดียว ที่ชั้นเรียน(@Service
เขา cites(ไม่ใช่ทุก @Component
, @Controller
แล้ว @Repository
ของโดเมน).
วิธีที่จะทำอย่างนี้วันนี้ถ้าไม่มี deprecated @SpringApplicationConfiguration
?
ปรับปรุง
เดิมทีข้าเพียงพูดของฉัน(ยังไม่ได้เวลาเผชิญหน้าความจริงกำแพง')ตัวอย่าง(คือ @SpringBootTest(classes={SomeServiceImpl.class},webEnvironment=WebEnvironment.NONE)
ถึงแม้ว่ามันโหลดที่ cited ชั้นเรียน obscured ทั้งหมดของ พื้นฐาน ของโปรแกรม-คอนเท็กซ์นั่นฤดูใบไม้ผลิบูตจะโหลดปกติ. ผ่านกานูทดลอง,ผมต้องเจอคำกล่าวนั้นเป็น inaccurate ในนั้นไม่ได้ เอา แต่เพียงสิ่งเดียว, บางอย่า งของพื้นฐานเป็น obscured,คือการตรวจสอบ(implementation ของจาวาการตรวจสอบรูปแบบ api). ในคำอื่นคือการทำปูมบันทึก,กำลังโหลดของคุณสมบัติต่างๆของเว็บเบราว์เซอร์ภายนอกและ@ค่า-plugging เป็นจริงโหลด/ปรับแต่ง. ฉันคิดว่าฉันคงต้องสับสน,ในทั้งหมดของฉันมาก permutations/พยายาม.