Я довольно новичок в тестировании и ищу советы.
Я использую ресурс холостого хода в двух действиях в своем коде, и я хотел бы, чтобы мои тесты эспрессо зарегистрировали оба из них, но яможно только найти способ его регистрации.
Класс ресурса холостого хода выглядит следующим образом:
@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;
но я не уверен, как к этому добраться.
Любая помощь с благодарностью.
Я просмотрел несколько других ответов, но не повезло.