2013-02-08 2 views
0

이런 식으로 할 수 있습니까? 어느 안드로이드/Robotium 테스트 프레임 워크 또는 다른 솔루션Android 용 복잡한 기능 테스트를 작성할 수 있습니까?

public void testAll() throws Exception { 
    test_001_LoginActivity(); 
    test_002_MainActivity(); 
} 

public void test_001_LoginActivity() throws Exception { 
    startActivity(); 
    test_001_LoginActivity_001_emptyUsername(); 
    test_001_LoginActivity_002_emptyPassword(); 
    test_001_LoginActivity_003_incorrectValues(); 
    test_001_LoginActivity_004_correctValues(); // MainActivity is opened on success 
} 

public void test_002_MainActivity() throws Exception { 
    test_002_MainActivity_001_profile(); 
    test_002_MainActivity_002_list(); 
    test_002_MainActivity_003_logout(); 
} 

과 아이디어는 test_001_LoginActivity()test_002_MainActivity()이 활동의 ​​레크리에이션없이 모든 대응 활동 테스트를 포함하는 것입니다. 그리고 그런 식으로 표시되는 결과가합니다 :

test_001_LoginActivity() - OK 
--->test_001_LoginActivity_001_emptyUsername() - OK 
--->test_001_LoginActivity_002_emptyPassword() - OK 
--->test_001_LoginActivity_003_incorrectValues() - OK 
--->test_001_LoginActivity_004_correctValues() - OK 

test_002_MainActivity() - NOK 
--->test_002_MainActivity_001_profile() - OK 
--->test_002_MainActivity_002_list() - NOK 
--->test_002_MainActivity_003_logout() - OK 

LoginActivity에 대한 모든 검사를 성공적으로 전달되는 것을 의미한다; (활동이 재현되지 이후)

나는 어쩌면 내가 잘못지고있어, 테스트에 새로 온 사람과 시험은 새로운 활동 인스턴스에 대해 실행하기위한 것입니다 test_002_MainActivity_002_list() 테스트 MainActivity 실패하지만, test_002_MainActivity_003_logout() 시험은 통과되었다 항상?

답변

0

메소드 앞에 "test"접두어가 jUnit Framework에 특별한 의미가 있기 때문에 모든 test_00X_METHOD 메소드의 이름을 바꾸면 현재 수행 할 수있는 일은 가능합니다. testAll()에서 모든 메소드는 jUnit과 같이 별도로 별도로 실행되며 모든 테스트 메소드가 별도의 테스트 케이스로 "test"접두어로 실행되며 해당 메소드간에 애플리케이션이 재시작됩니다. 따라서 모든 "test"접두어를 버리고 testAll()에 보관하면 잘 작동합니다. Activity가 자동으로 시작 되었기 때문에 test_001_LoginActivity()의 시작 부분에서 "startActivity()"메소드를 사용할 필요가 없습니다 - 어떤 활동입니까? 이 클래스에 유형 매개 변수로 전달한 활동 : http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html.

이 답변을 유용하게 사용하시기 바랍니다.

Krzysiek, 솔루션에 대한 Bitbar 소프트웨어 엔지니어

+0

, 당신은 내가 로그에 하나의 합격 점수를 얻을 제안했다 -은'testAll' 방법에 대해. 그리고 모든 테스트를 별도의 마크로 표시하고 싶습니다. –

+1

hmmm 그래서 '테스트 ...'메소드를 seperatly로 실행하고 결과를 보여줌으로써 jUnit 아키텍처에 적합하지 않습니다. 물론, testAll 내부의 'test ..'메소드도 실행되지만 수동으로 실행하게되면 testAll에서 공통적으로 발생하게되며 testAll 내부의 메소드도 seperatly로 실행됩니다. 어쩌면 어쩌면 "테스트 ..."대신에 어설 션을 사용 하시겠습니까? testAll에 대한 결과는 하나가되지만 sth가 실패하면 정확히 어디에서 ... 또는 어쩌면 거기에 대한 해결책이 있는지 알 수 있습니다. 그러나 나는 그것을 모릅니다 ... – Krzysiek