2009-11-18 5 views
0

방금 ​​스프링을 사용하여 데이터 소스를 제공하는 TestNG 테스트 케이스를 찾았습니다. 그 결과 코드는 아주 깨끗하고 간결합니다.배열 배열을 스프링 컨텍스트에 넣기

그러나 변수의 입력 목록을 가져올 수 있도록 테스트 사례를 확장해야합니다.

제가 아래에서 시도한 것처럼 목록 목록에 대한 빈 참조를 사용하고 있습니까? 그 일을하고 여전히 귀엽다는 (즉, 입력의 논리적 인 흐름과 출력을 분리하지 않는) 방법이 있습니까? 더 좋은 방법이 있습니까? 원래 코드는 문자열의 목록을 제공 할 수있는 쉬운 방법을 보이기 때문에 목록 대신 맵을 사용하는 것으로 나타납니다

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 

    <bean id="stringPatternRegexMap" class="java.util.HashMap"> 
     <constructor-arg> 
      <map> 
       <entry key="some input #1" value="expected output #1"/> 
       <entry key="some input #2" value="expected output #2"/> 
       <entry key="some input #3" value="expected output #3"/> 
       <entry key-ref="multi-list-1" value="expected output #3"/> 
       <entry key-ref="null-reference" value="null-reference"/> 
      </map> 
     </constructor-arg> 
    </bean> 

    <bean id="multi-list-1"> 
      <list> 
        <value>apple</value> 
        <value>banana</value> 
        <value>orange</value> 
      </list> 
    </bean> 

    <bean id="null-reference"> 
      <value> 
        <null/> 
      </value> 
    </bean> 
</beans> 

참고 [2].

답변

2

아니, 당신은 수의 매개 변수와 시험 방법을 공급하기 위해 @DataProvider을 사용할 수 있습니다

Received 1 parameters 
Received 2 parameters 

참고 테스트 방법 "중 하나를 선언 할 수 Object ... "또는"Object [] "(컴파일러와 동일합니다).

+0

예를 들어 주셔서 감사합니다. 여기서 설명한대로 테스트를 다시 구현했습니다. 내가 좋아하는 Spring XML 파일의 또 다른 기능이 있는데,이 솔루션으로는 그리워 할 것이다. 정규식은 모든 백 슬래시가 여분의 시간을 피할 필요가 없다. –

1

나는 올바른 방법으로 이것을하기 위해 TestNG와 DataSource 구조체를 사용할 것이다. 당신은 분명히이 Spring 설정을 만들 수 있지만, 테스트 코드이기 때문에 TestNG가 더 자연스러운 곳이라고 생각합니다.

@DataProvider 
    public Object[][] dp() { 
    return new Object[][] { 
     new Object[] { new Object[] { "a" } }, 
     new Object[] { new Object[] { "b", "c" } }, 
    }; 
    } 

    @Test(dataProvider = "dp") 
    public void g1(Object... params) { 
    System.out.println("Received " + params.length + " parameters"); 
    } 

가 인쇄됩니다 :

+0

흠, TestNG의 DataProvider는 일반적으로 알려진 수의 항목을 사용합니다. 변수의 수는 트릭입니다. 각 데이터 항목에 대해 별도의 테스트 결과를 만드는 TestNG의 동작이 좋았습니다. –

관련 문제