복붙노트

[SPRING] TestNG로 인한 스프링 의존성 삽입

SPRING

TestNG로 인한 스프링 의존성 삽입

Spring은 JUnit을 아주 잘 지원합니다. RunWith 및 ContextConfiguration 주석을 사용하면 상황이 매우 직관적으로 보입니다.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:dao-context.xml")

이 테스트는 Eclipse & Maven에서 올바르게 실행될 수 있습니다. TestNG에 비슷한 내용이 있는지 궁금합니다. 이 "차세대"프레임 워크로 이동하는 것을 고려하고 있지만 Spring을 테스트하기위한 일치 항목을 찾지 못했습니다.

해결법

  1. ==============================

    1.그것은 TestNG에서도 잘 작동합니다. 테스트 클래스는 다음 클래스 중 하나를 확장해야합니다.

    그것은 TestNG에서도 잘 작동합니다. 테스트 클래스는 다음 클래스 중 하나를 확장해야합니다.

  2. ==============================

    2.나를 위해 일한 예제는 다음과 같습니다.

    나를 위해 일한 예제는 다음과 같습니다.

    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
    import org.testng.annotations.Test;
    
    @Test
    @ContextConfiguration(locations = {"classpath:applicationContext.xml"})
    public class TestValidation extends AbstractTestNGSpringContextTests {
    
        public void testNullParamValidation() {
            // Testing code goes here!
        }
    }
    
  3. ==============================

    3.Spring과 TestNG는 잘 작동하지만 몇 가지 사항을 알고 있어야합니다. AbstractTestNGSpringContextTests를 서브 클래 싱하는 것 외에도 표준 TestNG setup / teardown 주석과 상호 작용하는 방법을 알고 있어야합니다.

    Spring과 TestNG는 잘 작동하지만 몇 가지 사항을 알고 있어야합니다. AbstractTestNGSpringContextTests를 서브 클래 싱하는 것 외에도 표준 TestNG setup / teardown 주석과 상호 작용하는 방법을 알고 있어야합니다.

    TestNG에는 4 단계의 설정이 있습니다.

    이는 정확히 예상대로 발생합니다 (자체 문서화 API의 훌륭한 예). 이것들은 모두 "dependsOnMethods"라는 선택적인 값을 가지며, 이것은 같은 레벨에있는 메소드의 이름 또는 이름 인 String 또는 String []을 취할 수 있습니다.

    AbstractTestNGSpringContextTests 클래스에는 SpringTestContextPrepareTestInstance라는 BeforeClass 주석이있는 메서드가 있습니다.이 메서드는 autowired 클래스를 사용하고 있는지 여부에 따라 설정 메서드를 설정해야합니다. 메소드의 경우 autowiring에 대해 걱정할 필요가 없습니다. 테스트 클래스가 클래스 메소드 이전에 설정되었을 때 발생하기 때문입니다.

    이것은 BeforeSuite로 주석 된 메소드에서 autowired 클래스를 사용하는 방법에 대한 의문을 남깁니다. springTestContextPrepareTestInstance를 수동으로 호출하여이 작업을 수행 할 수 있습니다. 기본적으로이 작업을 수행하지 않는 동안 여러 번 성공적으로 수행했습니다.

    예를 들어, Arup의 예제를 수정 한 버전입니다.

    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
    import org.testng.annotations.Test;
    
    @Test
    @ContextConfiguration(locations = {"classpath:applicationContext.xml"})
    public class TestValidation extends AbstractTestNGSpringContextTests {
    
        @Autowired
        private IAutowiredService autowiredService;
    
        @BeforeClass(dependsOnMethods={"springTestContextPrepareTestInstance"})
        public void setupParamValidation(){
            // Test class setup code with autowired classes goes here
        }
    
        @Test
        public void testNullParamValidation() {
            // Testing code goes here!
        }
    }
    
  4. from https://stackoverflow.com/questions/2608528/spring-dependency-injection-with-testng by cc-by-sa and MIT license