Android,Espresso测试无法与Kotlin上的活动一起使用

时间:2017-06-28 14:45:08

标签: kotlin android-espresso

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

工作流:

  1. 片段有列表视图(新闻)
  2. 点击列表中的某个项目然后打开显示标题为“单个新闻”的新闻详细信息的活动(NewsDetailsActivity)
  3. 片段代码:

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

    NewsDetailsActivity的java代码:

    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);
    }
    

    当活动开放时,标题为“单个新闻”。 这里截图: enter image description here

    所以工作正常。行。

    所以我写了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()));
        }
    

    它已通过并正常工作。行。

    所以现在我们用语言Kotlin重写NewsDetailsActivity。

    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的标题现在不是“单个新闻”。它绝对是另一个标题=“ Recomendation ”。

    此处截图: enter image description here

    结果测试失败。 R.string.news_single 键未更改。

    为什么删除新闻的标题会被改变?

0 个答案:

没有答案