2016-09-15 9 views
3

계측 테스트에서 오이 시나리오를 실행하려면 Green Coffee library을 사용하고 있습니다. 나는 REPO 단계별로 제공하는 예를 따라, 그러나 여기에서 오류 발생 :클래스에 public constructor가 없습니다. Cucumber 시나리오 실행 중 TestCase (String name) 또는 TestCase()가 있습니다.

junit.framework.AssertionFailedError: Class pi.survey.features.MembersFeatureTest has no public constructor TestCase(String name) or TestCase() 

내가 provided here 같은 클래스에 기본 생성자를 추가하려고하면, 그것은

no default constructor available in 'com.mauriciotogneri.greencoffee.GreenCoffeeTest'

여기 내 테스트의 말한다 소스 코드 :

package pi.survey.features; 

import android.support.test.rule.ActivityTestRule; 

import com.mauriciotogneri.greencoffee.GreenCoffeeConfig; 
import com.mauriciotogneri.greencoffee.GreenCoffeeTest; 
import com.mauriciotogneri.greencoffee.Scenario; 

import org.junit.Rule; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.junit.runners.Parameterized; 

import java.io.IOException; 

import pi.survey.MainActivity; 
import pi.survey.steps.memberSteps; 

@RunWith(Parameterized.class) 
public class MembersFeatureTest extends GreenCoffeeTest { 
    @Rule 
    public ActivityTestRule<MainActivity> activity = new ActivityTestRule<>(MainActivity.class); 

    public MembersFeatureTest(Scenario scenario) { 
     super(scenario); 
    } 



    @Parameterized.Parameters 
    public static Iterable<Scenario> scenarios() throws IOException { 
     return new GreenCoffeeConfig() 
       .withFeatureFromAssets("assets/members.feature") 
       .scenarios(); 
    } 

    @Test 
    public void test() { 
     start(new memberSteps()); 
    } 

} 

그리고 내 members.feature 소스 :

Feature: Inserting info to server 



    Scenario: Invalid members 
      When I introduce an invalid members 
      And I press the login button 
      Then I see an error message saying 'Invalid members' 
+0

흥미 롭; 당신이 올바른지; GreenCoffeeTest는 생성자 만 시나리오를 사용합니다. 따라서 기본 생성자 또는 문자열을 취하는 ctor가있는 클래스로 확장하는 것은 불가능한 것처럼 보입니다. – GhostCat

+0

예, [문제점] (https://github.com/mauriciotogneri/green-coffee/issues/1)을 만들었습니다. 그래서 GreenCoffeeTest 클래스는 기본 빈 생성자 또는 뭔가가 있어야합니까? – getsadzeg

+0

잘 모르겠다. 내게는 그 두 가지 (GreenCoffee)와 코코는 단순히 지금처럼 서로 놀 수없는 것처럼 보인다. – GhostCat

답변

1

. 때문에 에서 테스트 GreenCoffee이 필요하다는 사실 :

@RunWith(Parameterized.class) 

@Parameters 주석 정적 방법은 무엇인가 목록 (그러나 반드시 시나리오)를 반환해야합니다. 설명서의 예제는 시나리오 목록을 반환하기 때문에 생성자는 단일 시나리오를 매개 변수로 사용해야합니다.

그러나 시나리오 및 생성자에 전달해야하는 다른 개체를 캡슐화하는 클래스를 만들 수 있습니다.

public class TestParameters 
{ 
    public final String name; 
    public final Scenario scenario; 

    public TestParameters(String name, Scenario scenario) 
    { 
     this.name = name; 
     this.scenario = scenario; 
    } 
} 

당신은 쓸 수 있습니다 :

public TestConstructor(TestParameters testParameters) 
{ 
    super(testParameters.scenario); 
} 

@Parameters 
public static Iterable<TestParameters> parameters() throws IOException 
{ 
    List<TestParameters> testParametersList = new ArrayList<>(); 

    List<Scenario> scenarios = new GreenCoffeeConfig() 
      .withFeatureFromAssets("...") 
      .scenarios(); 

    for (Scenario scenario : scenarios) 
    { 
     testParametersList.add(new TestParameters(scenario.name(), scenario)); 
    } 

    return testParametersList; 
} 

이런 식으로 여러 값을받을 수 있습니다 (객체에 캡슐화) 테스트 생성자에서 예를 들어, 다음 클래스를 제공.

+0

네,이 생성자를 가져 왔습니다, 고마워요. 하지만 위의 대답으로 오류를 수정했지만 구조를 수정했습니다. – getsadzeg