0

계측기 테스트를 작성하고 어설 션이 통과합니다. 그러나 실행되는 구성에 관계없이 실행이 종료되거나 종료되지 않습니다. 수동으로 실행을 종료해야합니다. CI 설정에 최적이 아닙니다.안드로이드 계측기 테스트 무한 실행

나는 다음과 같은 실행 구성에서 아래의 코드 실행 시도 : 테스트 클래스에서

  • 모든 테스트 실행 - 첫 번째
  • 를 실행 한 후이 인스턴스에서 실행이 두 번째 테스트로 진행하지 않습니다 테스트 패키지에서 모든 테스트 실행 -이 경우 실행은 첫 번째 테스트를 실행 한 후 두 번째 테스트로 진행하지 않지만 다른 클래스의 다른 모든 인스트루먼트 테스트는 성공합니다.
  • 실행 내 테스트 코드를 꺼내 (나는 아래에했던 것처럼) 코드 실행이 완료되지 않은 매우 간단한 테스트를 넣어 경우에도 테스트 클래스 별도로

에서 두 테스트.

public class TestClass { 

    private MainActivity mainActivity; 
    private MyScreen myScreenInstance; 

    @Rule 
    public ActivityTestRule mActivityRule = new ActivityTestRule<>(MainActivity.class); 

    @Before 
    public void setUp() throws FileNotFoundException { 
     mainActivity = (MainActivity) mActivityRule.getActivity(); 
    } 

    @Test 
    public void test_1() throws FileNotFoundException { 
     assertEquals(1,2); 
    } 

    @Test 
    public void test_2() throws FileNotFoundException { 
     assertEquals(2,2); 
    } 


} 
내가 테스트하기 위해 노력하고있어 상황에 대한

이 나는 ​​강사, 나는 모든 일을 작성한 테스트 코드와 주장에 의해 작성된 간단한 게임 엔진의 상단에 작성한 클래스의 터치 동작 -하지만, 문제는 실행이 완료되지 않는다는 것입니다.

ActivityTestRule을 파괴하기 위해 'teardown'방법을 사용해야합니까? 이 실행이 올바르게 완료되도록하려면 어떻게해야합니까?

흥미롭게도이 매우 간단한 어설 션은 Nexus 7 에뮬레이터의 API 25에서 성공적으로 실행되지만 Nexus 5 에뮬레이터에서 API 23을 실행하면 위에서 설명한대로 테스트가 완료되지 않습니다.

상세 내용 :

  • 는 단계 스테핑 디버거를 통해 천천히 테스트를 실행 - 모두 통과가
  • @After에 Thread.sleep를 (1000) (의 tearDown)을 첨가한다로서 메서드를 사용하면 설명 된 문제가 발생하지 않습니다. 그러나이 문제는 우리의 실행이 여전히 firebase 테스트 랩 (CI)에서 시간 초과됨에 따라 해결되지 않습니다.

아래 그림은 내가 시작한 실행의 그림입니다. 그리고 나서 5 분 후 정지합니다. 그것은 < 2 초 동안 2 번의 테스트를 완료해야합니다.

enter image description here

+0

이 게시물에 몇 가지 새로운 정보를 게시했습니다.이 문제를 해결하기 위해 여전히 적극적으로 노력하고 있습니다. –

답변

0

지금은 일반적으로 개발자는 그러나 때문에 내가 이렇게되지 않았습니다에서 내가 작업하고있는 프레임 워크의 특성으로하는 onView 전화를 추가하는 것,이 문제를 해결했다. 난 그냥 게임 내에서 실행하는 주 영역을 클릭, 설정에

onView(withId(R.id.activity_fragment_id)).perform(click()); 

을 추가하고 지금 통과 테스트했다.