2017-07-11 14 views
0

私はこのアンドロイドテストの初心者です。私が望むのは、カスタムGLRendererを1つ持つGLSurfaceViewである私のフラグメントのjunit(Mockitoによる)テストを書くことです。opengl es2.0のためのjunitテストの作成方法android app

public class SuefaceViewFragment extends Fragment{ 

private View mRootView; 

private GLSurfaceView mSurfaceView; 
private CustomRenderer mRenderer; 


public SurfaceViewFragment() { 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    mRootView = inflater.inflate(R.layout.fragment_surface_view, container, false); 
    initView(); 
    return mRootView; 
} 


private void initView() { 
    mSurfaceView = (GLSurfaceView) mRootView.findViewById(R.id.surface_view); 

    mSurfaceView .setRenderer(mRenderer); 
    mSurfaceView .setZOrderMediaOverlay(true);   
    mSurfaceView .setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); 
} 


@Override 
public void onResume() { 
    super.onResume(); 
    mSurfaceView.onResume(); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    mSurfaceView.onPause(); 
} 

}

これは私はJUnitのとMockitoを用いて使用して、この上断片に対するユニットテストを書きたいGLSurfaceView

public class CustomRenderer implements GLSurfaceView.Renderer { 




public CustomRenderer() { 

} 



private void init() { 

    GLES20.glDisable(GLES20.GL_BLEND); 
    GLES20.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 

} 

@Override 
public void onSurfaceCreated(GL10 gl, EGLConfig config) { 
    init(); 
} 

@Override 
public void onSurfaceChanged(GL10 gl, int width, int height) { 
    GLES20.glViewport(0, 0, width, height); 

} 

@Override 
public void onDrawFrame(GL10 gl) { 

    render(); 
} 

private void render() { 
    GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT); 

    // To Do Rendering code 

} 

あります。出来ますか?可能であればどのように書くか?

答えて

0

ユニットテストでビジネスロジックをテストします。彼らは特にandroid sdk(フラグメントを含む)を含むものでは動作しません。

GLSurfaceViewは、アンドロイドのテストフレームワークでは使用できません。 UiAutomatorとEspressoの両方でテストするビュー(クリックするボタンなど)と、開いているglが非常に速い理由は、ビューのツリーに属していないことが原因です。唯一の "ビュー"アンドロイドはGLSurfaceViewを知っています。

タッチイベントを録画して、アプリとの対話のためにタッチイベントを送信することで再生できます。それは動作しますが、それは脆いです。

関連する問題