วิธีที่จะโหลดในฤดูใบไม้ผลิบูตการทดสอบพื้นฐานฤดูใบไม้ผลิโปรแกรมคอนเท็กซ์เพิ่มเดียวที่ชื่อส่วนประกอบ?

0

คำถาม

ดั้งเดิม

ฉันกำลังพยายามโหลดในการทดสอบของฤดูใบไม้ผลิบูต(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/พยายาม.

1

คำตอบที่ดีที่สุด

0

หลังจากยังมากกว่านูทดลอง,ผมเจอคำตอบ ฉันไม่สามารถพูดได้ว่าไม่ว่ามันคือที่ดีที่สุดตอบ,แต่มันเป็น concise และแน่นอนมันเทคนิค...

import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;

// automatically configures validation (implementation of Java Validation API)
@ImportAutoConfiguration(ValidationAutoConfiguration.class)

// obscures/disables any otherwise-automatic web-environment;
// automatically configures logging, loading of external properties, and @Value-plugging;
// and, beyond that, adds to application-context only _cited_ classes/configuration-classes
@SpringBootTest(classes={SomeServiceImpl.class},webEnvironment=WebEnvironment.NONE)// full context loaded, if unqualified

public class SomeServiceTests {
...
}
2021-11-25 08:32:45

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่