을 로드하는 방법,봄에는 부팅 테스트,기본적인 봄 응용 프로그램-컨텍스트를 추가하는 구성 요소는?

0

질문

내가 노력하고,부하 테스트에서 봄의 부트(v2.3.8)응용 프로그램, 만 이라는 구성요소에서는 기본적인 봄 응용 프로그램-컨텍스트입니다. 조금 더 구체적으로 말씀드리고 싶 로드에서 테스트,봄 응용 프로그램-컨텍스트를 구성하는 적어도 로깅,로드 의 외부성,유효성 검사(을 통해 Java 검증 API)고 @Value-폐쇄 하지 않고 MVC,Data JPA,etc. 서,테스트하고 싶을 통해 제약-주석이 인터페이스(예: @NotBlank다), @Service 는 운동 로컬 파일시스템(MVC,Data JPA,또는 다른 봄 부팅 테스트"를 조각")를 하나의 데이터 구성원을 통해 채워집 @Value.

가 아무 소용이 없고,많은 주석(그리고 몇 가지의 고유의 특성을)에서,서로 다른 조합 하위 집합니다:예를들면 @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 짐을 인용 클래스만을 가린의 모든 기본 (로깅,검증,etc.) 는 또한 것입니다.

다음과 같은 발췌문에서,크레이그의 벽'"봄 부팅 활동,"을 것 같다 정확히 무엇을 나는 찾지만,그것의 주요한 공구(@SpringApplicationConfiguration)은 지금 사용되지 않습니다(그리고 그것은 공식적으로 권장 보충- @SpringBootTest -행동하지 않습니다 똑같이 적어도 특성에 관한 classes):

지만@ContextConfiguration 큰 일을 로드하는 봄 응용 프로그램 컨텍스트,그것을 만드는 방법이 간단한 응용 프로그램과 전체 봄 부팅 치료에...SpringApplication 뿐만 아니라드 응용 프로그램 컨텍스트,하지만 또한 로깅,로드 외장 속성을(응용 프로그램.특성 또는 응용 프로그램입니다.yml)및 다른 기능을 봄 부팅합니다. 를 사용하는 경우@ContextConfiguration 얻지 못할 것이 그 특징이다. 그 기능에의 통합을 테스트할 수 있습 교환@ContextConfiguration 봄 부@SpringApplicationConfiguration:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes=AddressBookConfiguration.class)
public class AddressServiceTests {
...
}

있다,그는"전체는 봄 부팅 처리"하지만 추가하면 단지 클래스(@Service로)그는 인용하지 않음(모든 @Component, @Controller@Repository 자신의 도메인).

어떻게 이렇게 오늘의 없이 사용되지 않는 @SpringApplicationConfiguration?

업데이트

내가 원래 명시된 내지 않음(크레이그의 벽')를 들어(즉 @SpringBootTest(classes={SomeServiceImpl.class},webEnvironment=WebEnvironment.NONE)지만,로드 인용 클래스에 가려진 모든 의 기본 응용 프로그램-컨텍스트는 봄 부팅이 일반적으로 load. 를 통해 추가 실험,내가 찾는 문확하지 않는 모든 지만, 일부 의 기본을 가려져 있습니다 즉,유효성 검사(의 구현 Java 검증 API). 다시 말해서,로그,로드 의 외부성,그리고@Value-연결하는,참으로,로드/구성되어 있습니다. 나는 생각해야 했는데,혼란에서의 모든 내가 많은 순열/시도합니다.

1

최고의 응답

0

후에는 아직 더 많은 실험을 발견했다. 내가 말할 수 없는 최고의 대답이지만,그것은 간결하고 확실하지 않...

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ý
..................................................................................................................