Как включить два ресурса холостого хода в один тест эспрессо? - PullRequest
0 голосов
/ 26 сентября 2019

Я довольно новичок в тестировании и ищу советы.

Я использую ресурс холостого хода в двух действиях в своем коде, и я хотел бы, чтобы мои тесты эспрессо зарегистрировали оба из них, но яможно только найти способ его регистрации.

Класс ресурса холостого хода выглядит следующим образом:


    @Nullable
    private volatile ResourceCallback mCallback;

    private AtomicBoolean mIsIdleNow = new AtomicBoolean(false);

    @Override
    public String getName() {
        return this.getClass().getName();
    }

    @Override
    public boolean isIdleNow() {
        return mIsIdleNow.get();
    }

    @Override
    public void registerIdleTransitionCallback(ResourceCallback callback) {
        mCallback = callback;
    }

    //sets the idle state and pings the callback
    public void setIdleState(boolean isIdleNow) {
        mIsIdleNow.set(isIdleNow);
        if (isIdleNow && mCallback != null) {
            mCallback.onTransitionToIdle();
        }
    }
}

Занятие А запускает Занятие B после нажатия кнопки.И действие A, и действие B создают экземпляр SimpleIdlingResource:

    private SimpleIdlingResource mIdlingResource;

    @VisibleForTesting
    @NonNull
    public IdlingResource getIdlingResource(){
        if(mIdlingResource == null){
            mIdlingResource = new SimpleIdlingResource();
        }
        return mIdlingResource;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getIdlingResource();
        mIdlingResource.setIdleState(true); ...}

Тест начинается в действии A и проходит через действие B. Поэтому тест основан на действии A следующим образом:

public class ScreenTests extends BaseTest {

    @Rule
    public ActivityTestRule<ActivityA> mActivityTestRule = new ActivityTestRule<>(ActivityA.class);

    private IdlingResource idlingResourceA;

    @Before
    public void setUp() {
        idlingResourceA = mActivityTestRule.getActivity().getIdlingResource();
        IdlingRegistry.getInstance().register(idlingResourceA); ...}

Как получить ссылку на мероприятие B, чтобы получить его в режиме ожидания?Мне нужно что-то вроде: IdlingResource idlingResource B = ActivityB.getIdlingResource; но я не уверен, как к этому добраться.

Любая помощь с благодарностью.

Я просмотрел несколько других ответов, но не повезло.

...