Intereting Posts
Android: запустите 4 async-задачи (которые работают с Rest API), подождите и начните еще одно действие после выполнения всех задач Firebase UI для хранения с Kotlin дает ошибку передача var-args в MessageFormat.format в kotlin Out-projected type в универсальном интерфейсе запрещает использование метода с общим параметром Сигнал / событие AboutToQuit в Android Tornadofx Javafx – Как перезагрузить представление / компонент Настройка Kotlin для Gradle без поддержки IDE – классы Kotlin не попадают в classpath Невозможно повторно использовать параметры функции kotlin, как упростить передачу параметров в конструктор базового класса? Любое улучшение кода при добавлении / замене фрагмента Как создать javadoc jar для загрузки репозитория с помощью dokka? java.lang.NoClassDefFoundError: kotlin / jvm / internal / Intrinsics в libgdx editText получить текст kotlin Не удалось просмотреть элементы андроида java / kotlin recyclerview Миссия по срокам не выполняет миссии

Android, тест Espresso не может работать с записью активности на Kotlin

org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.3 com.android.support.test.espresso:espresso-core:2.2.2 

Процедура:

  1. Фрагмент имеет просмотр списка (новости)
  2. Когда вы нажмете на какой-то элемент в списке, откройте мероприятие (NewsDetailsActivity), в котором отображаются новости с заголовком «Одинокие новости»,

Код фрагмента:

 Integer newsId = 1234; Intent intent = new Intent(context, NewsDetailsActivity.class); intent.putExtra(NewsDetailsActivity.ID newsId); startActivity(intent); 

Код java для NewsDetailsActivity:

 public class NewsDetailsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle extras = getIntent().getExtras(); setContentView(R.layout.news_details); int newsID = 0; String mainCaption = ""; if (extras != null) { newsID = extras.getInt(SELECTED_NEWS_ID); mainCaption = extras.getString(SELECTED_NEWS); } titleTextView = (TextView) findViewById(R.id.titleTextView); mainNewsDetailsContainer = (LinearLayout) findViewById(R.id.mainNewsDetailsContainer); mainCaptionTextView = (TextView) findViewById(R.id.mainCaptionTextView); } 

Когда активность открыта, титул « Одинокие новости ». Здесь снимок экрана: введите описание изображения здесь

Так что работайте нормально. ОК.

Поэтому я пишу тест для Android Espresso:

  @Test public void newsDetailsTitle() { // click on listView item and as result open NewsDetailsActivity onData(anything()).inAdapterView(withId(R.id.containerNotEmptyListView)).atPosition(NEWS_LIST_POSITION).perform(click()); // test that title of NewsDetailsActivity is "Single news" onView(allOf(withId(R.id.titleTextView), withText(R.string.news_single))).check(matches(isDisplayed())); } 

И он прошел и отлично работает. ОК.

Итак, теперь мы переписываем NewsDetailsActivity на языке Kotlin.

NewsDetailsActivity код Kotlin:

  class NewsDetailsActivity : AppCompatActivity() { @SuppressLint("NewApi") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) verticalLayout { include<View>(R.layout.toolbar) find<TextView>(R.id.titleTextView).setText(R.string.single_news) setSupportActionBar(find<Toolbar>(R.id.toolbar)) supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) supportActionBar?.setDisplayShowTitleEnabled(false) } } } 

Когда я запускаю приложение, все работает нормально. Подробности новостей открываются и показывают название « Одинокие новости» . ОК.

Но когда я начинаю тест, название NewsDetailsActivity теперь НЕ « Одиночные новости ». Его абсолютное другое название = « Рекомендация ».

Здесь снимок экрана: введите описание изображения здесь

Как результат теста не удается. Ключ R.string.news_single не был изменен.

Почему название новости detalis было изменено?