2014-03-05 39 views
0

我有一個帶有可滑動視圖的Android選項卡布局。Android:如何爲Android片段執行單元測試

文件結構是如下所示:

  • 有一個活動類:TabMainActivity.java
  • 在這種活動,有一個片段類:bookLockerFragment.java

該片段類被鏈接到包含各種按鈕的XML文件。

public class bookLockerFragment extends Fragment { 
    Button btnSis; 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
     rootView = inflater.inflate(R.layout.fragment_booklocker, container, false); 
     btnSis = (Button) rootView.findViewById(R.id.btnSis); 
    } 
....... 
} 

我已經閱讀了關於vogella活動測試的教程,但是關於片段的單元測試只有極少的信息。

我嘗試寫一些代碼,但卡住了這行:

transaction.add(R.layout.fragment_booklocker, fragment, "tag"); 

我收到以下錯誤:

The method add(int, Fragment, String) in the type FragmentTransaction is not applicable for the arguments (int, booklockertest, String)

代碼:在這個

public class booklockertest extends 
ActivityInstrumentationTestCase2 <TabMainActivity> { 

    private TabMainActivity mActivity; 

    Fragment fragment; 
    FragmentManager mFragmentManager; 

    public booklockertest() { 
     super(TabMainActivity.class); 
     // TODO Auto-generated constructor stub 
    } 

    protected void setUp() throws Exception { 
     super.setUp(); 
     mActivity = getActivity(); 
    } 

    private Fragment startFragment(booklockertest fragment) { 
     FragmentTransaction transaction = 

     mActivity.getSupportFragmentManager().beginTransaction(); 
     transaction.add(R.layout.fragment_booklocker, fragment, "tag"); 
     transaction.commit(); 
     getInstrumentation().waitForIdleSync(); 
     Fragment frag = 

     mActivity.getSupportFragmentManager().findFragmentByTag("tag"); 
     return frag; 
    } 

    public void testFragment() { 
     booklockertest fragment = new booklockertest() { 
      //Override methods and add assertations here. 
     }; 

     Fragment frag = startFragment(fragment); 
    } 
} 

回答

0

蹣跚,你可能已經想通了,但是

private Fragment startFragment(booklockertest fragment) { ... } 
... 
public void testFragment() { 
    booklockertest fragment = new booklockertest() { 
     //Override methods and add assertations here. 
    }; 

    Fragment frag = startFragment(fragment); 
} 

應該

private Fragment startFragment(bookLockerFragment fragment) { ... } 
... 
public void testFragment() { 
    bookLockerFragment fragment = new bookLockerFragment() { 
     //Override methods and add assertations here. 
    }; 

    Fragment frag = startFragment(fragment); 
}