자원

2011-03-31 8 views
1

내가 구글에서 HelloAndroidTest 자습서를 사용하고 검색에 널 포인터를 받는다.자원

<?xml version="1.0" encoding="utf-8"?> 
<TextView android:id="@+id/textview" xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:text="@string/hello"/> 

그리고 strings.xml의 :

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="hello">Hello Android!</string> 
    <string name="app_name">Hello, Android</string> 
</resources> 

package com.example.helloandroid; 


import android.app.Activity; 

import android.os.Bundle; 

    public class HelloAndroid extends Activity { 
     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
     } 
    } 

이 main.xml에 있습니다 : 여기

package com.example.helloandroid.test; 

import com.example.helloandroid.HelloAndroid; 

import android.test.ActivityInstrumentationTestCase2; 
import android.widget.TextView; 

public class HelloAndroidTest extends 
     ActivityInstrumentationTestCase2<HelloAndroid> { 

    private HelloAndroid mActivity; 
    private String resourceString; 
    private TextView mView; 

    public HelloAndroidTest() { 
     super("com.example.helloandroid", HelloAndroid.class); 
    } 


    protected void setUp(TextView mView) throws Exception { 
     super.setUp(); 
     mActivity = this.getActivity(); 
     mView = (TextView) mActivity 
       .findViewById(com.example.helloandroid.R.id.textview); 
     resourceString = mActivity 
       .getString(com.example.helloandroid.R.string.hello); 
    } 

    public void testPreconditions() { 
     assertNotNull(mView);  // <== always null 
     //System.out.println("Resourse string: " + resourceString); 
     //assertNotNull(resourceString); // <== always null (when run) 
    } 

    public void testText() { 
     assertEquals(resourceString, (String) mView.getText()); 
    } 
} 

는 HelloAndroid 클래스의 : 여기

는 테스트 클래스의

mView와 리소스 문자열 모두 각각의 notNull 테스트가 실패합니다.

이 아주 기본이지만, 성공적으로 생성 할 수있는 활동을 요구하는 수행하고 자원 내가 단위 테스트에 착수하는 데 필요한 기능입니다 HelloAndroid 프로젝트에서 가져온. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

+0

assertNotNull이 실패하거나 NPE (제목 언급)가 표시됩니까? –

+0

오른쪽,이 경우 null 포인터가 아니라면 assert not null은 제목을 조정합니다. 나는 HelloWorldTest을 redid 때 –

+0

그래서 mActivity 그냥 그것을 고정하지만이 –

답변

0

나는 그것을 얻었습니다. 테스트 메소드 자체에서 액티비티를 생성해야하는 것처럼 보입니다. 일단 거기로 옮기면 잘 작동합니다. getActivity 문서는 실제로 마지막에 저를 흘려 주기도 것입니다 그 효과에 뭔가를 주장 불멸 MLK의 말에 -. 마침내, 마침내 무료 무료 - 무료에서 마지막.

+0

을 assertnotNull (mActivity)를 추가 증명하기 위해, null가 아닌, 그것은 잘 작동하고이 수정이 필요하지 않았다. 나는 처음에 뭘 잘못했는지 추적 할 시간이 없었어요. –

1

귀하의 첫 번째 코드 제출 보면, 내가 설치, 따라서 매개 변수와 함께 오버라이드 (override)되는 메소드가 호출되지 얻을 결코 어떤 매개 변수를 생각하지 않는다, 따라서 모든 인스턴스 바르가 null입니다.