2014-02-23 8 views
6

시험 수업을보기 위해 Butterknife를 사용할 수 있습니까? 뷰는 MainActivity 클래스에 의해 생성되고 커밋 된 프래그먼트로 주입됩니다. 나는 내 조각의 견해를 주입하는 Butterknife를 사용하지만Butterknife를 사용하여 에스프레소에서 뷰를 삽입 할 수 있습니까?

public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> { 

private MainActivity mMainActivity; 
private Button learnButton; 
private Button teachButton; 

@SuppressWarnings("deprecation") 
public MainActivityTest() { 
    super("com.example.application.app", MainActivity.class); 
} 

protected void setUp() throws Exception { 
    super.setUp(); 

    mMainActivity = getActivity(); 
    learnButton = (Button) mMainActivity.findViewById(R.id.buttonLearn); 
    teachButton = (Button) mMainActivity.findViewById(R.id.buttonTeach); 
} 

:

public class ChooseActionFragment extends Fragment { 

@InjectView(R.id.buttonTeach) Button buttonTeach; 
@InjectView(R.id.buttonLearn) Button buttonLearn; 

public ChooseActionFragment() { } 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
    ButterKnife.inject(this, rootView); 
    return view; 
} 
내가 원하는

난에 Butterknife을 사용할 수있는 방법을 알고 여기에

내 테스트 클래스의 코드입니다 내 프로덕션 코드에서했던 것처럼 내 테스트에서 내 상용구보기 코드를 줄이십시오.

답변

2

예, 가능합니다. 참고로

: 당신이 종속성을 테스트에 http://jakewharton.github.io/butterknife/javadoc/butterknife/ButterKnife.html

는 ButterKnife를 포함합니다.

ButterKnife.inject()의 첫 번째 인수는 '대상'입니다. 즉, @InjectView 주석이있는 입력란이있는 클래스의 인스턴스이고 두 번째 인수는 삽입 될보기가 포함 된 활동,보기 또는 대화 상자입니다. 이 같은

뭔가 :

public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> { 

private MainActivity mMainActivity; 
@InjectView(R.id.buttonLearn) 
Button learnButton; 

@InjectView(R.id.buttonTeach) 
Button teachButton; 

@SuppressWarnings("deprecation") 
public MainActivityTest() { 
    super("com.example.application.app", MainActivity.class); 
} 

protected void setUp() throws Exception { 
super.setUp(); 

    mMainActivity = getActivity(); 
    ButterKnife.inject(this, mMainActivity); 
} 
+0

이 나를 위해 작동하지 않습니다. 보기에 액세스하려고 할 때마다 NPE가 표시됩니다. 나는'ButterKnife.inject (this, activity);와'ButterKnife.inject (this, fragment.getView())'를 시도했다. – psyren89