การเพิ่มทรัพยากรเลย์เอาต์ให้กับ androidTest

ฉันต้องการเพิ่มไฟล์ XML ของเลย์เอาต์ลงในโฟลเดอร์ androidTest ของฉันเพื่อใช้สำหรับการทดสอบเท่านั้น

ฉันเพิ่มโฟลเดอร์ res/layout ลงใน androidTest และพยายามเพิ่มไฟล์เลย์เอาต์ลงไป แต่มันให้ข้อผิดพลาด URI is not registered สำหรับ xmlns:android="http://schemas.android.com/apk/res/android"

โปรเจ็กต์ไม่รู้จักว่าเป็นไฟล์เลย์เอาต์ที่ถูกต้อง


person Abdullah    schedule 21.11.2016    source แหล่งที่มา
comment
ตรวจสอบคำตอบนี้ด้วย คุณได้สร้าง import <yourDefaultPackage>.test.R: stackoverflow.com/a/31492816/1797950   -  person crgarridos    schedule 11.02.2019


คำตอบ (3)


การเพิ่มทรัพยากร xml ลงใน androidTest เป็นเรื่องยาก

การทดสอบเครื่องมือวัด Android จะสร้าง APK อื่นเพื่อดำเนินการทดสอบกับแอปพลิเคชันดั้งเดิมของคุณ แม้ว่าคุณจะสามารถเข้าถึง Context และออบเจ็กต์จากแอปพลิเคชันหลักของคุณได้ แต่คุณไม่สามารถแก้ไขไฟล์ APK ที่สร้างขึ้นของแอปของคุณได้

นั่นหมายความว่าคุณไม่สามารถใส่เลย์เอาต์ xml เพิ่มเติมลงในแอปพลิเคชันดั้งเดิมของคุณจากการทดสอบที่อยู่ในโฟลเดอร์ androidTest

สารละลาย:

อีกทางหนึ่ง

  • คุณสามารถสร้าง buildType ชื่อ espresso ได้
  • Then, create an espresso folder where you can put any java or Android resource you want to add.
    • You can even modify your AndroidManifest there.
  • จากนั้นใช้ testBuildType 'espresso'

build.gradle ของคุณควรมีลักษณะดังนี้:

android {
  testBuildType 'espresso'

  buildTypes {
    espresso.initWith(buildTypes.release)
  }
}

dependencies {
  espressoCompile 'somedependency' // you can even have special dependencies
}

เมื่อคุณทำการทดสอบเอสเปรสโซเกี่ยวกับรสชาติดังกล่าว คุณจะสามารถเข้าถึงไฟล์ XML เค้าโครงเพิ่มเติมที่คุณเพิ่มไว้ได้

ควรมีลักษณะเช่นนี้:

ป้อนคำอธิบายรูปภาพที่นี่

person tasomaniac    schedule 21.11.2016
comment
คำตอบที่ดี @tasomaniac จะดีกว่าถ้าใช้ testBuildType ที่ไม่ได้แก้ไขจุดบกพร่อง เพื่อให้คุณหลีกเลี่ยงไม่ให้ชุดรสชาติของคุณขยายใหญ่ขึ้นได้ - person a.bertucci; 27.02.2017

ง่ายมาก! โดยทั่วไป คุณควรวางทรัพยากรของคุณไว้ใต้โฟลเดอร์ src/androidTest/res และนั่นคือ! จากนั้นคุณสามารถใช้มันในไฟล์ src/androidTest/java ของคุณ ใช่ คุณไม่สามารถใช้รูปแบบ ทดสอบ ใน APK ที่ใช้งานจริงของคุณได้ แต่ คุณสามารถใช้รูปแบบการทดสอบใน APK ทดสอบของคุณได้

มีปัญหาบางอย่างที่อาจทำให้คุณสับสน ตัวอย่างเช่น การเติมข้อความอัตโนมัติทำงานได้ดีไม่บ่อยนัก แต่ถึงกระนั้น มันก็สร้างและใช้งานได้

เมื่อเร็วๆ นี้ ฉันเขียน การควบคุมที่กำหนดเองสำหรับ EditText ที่มาสก์ ดังนั้นฉันจึงไม่ต้องการใส่กิจกรรมใดๆ ลงในไลบรารี แต่ฉันต้องการให้กิจกรรมตรวจสอบมุมมองและฉันต้องการขยายจาก XML คุณสามารถดูโค้ดทั้งหมดได้บนหน้า GitHub นี่คือช่วงเวลาสำคัญบางส่วน:

$ tree androidTest/
androidTest/
├── AndroidManifest.xml
├── java
│   └── ru
│       └── egslava
│           └── lib_phone
│               ├── MainActivityTest.java
│               ├── TestActivity.java
│               └── actions
│                   ├── HintViewAction.java
│                   ├── KeepHintViewAction.java
│                   └── SetTextViewAction.java
└── res
    ├── layout
    │   └── activity_main.xml
    └── values
        └── styles.xml

ดังนั้นคุณจะเห็นได้ว่าภายใต้ androidTest มีโปรเจ็กต์แยกต่างหากซึ่งมีรายการของตัวเองที่ลงทะเบียนกิจกรรมและอื่น ๆ :-) ฉันจะแชร์ไฟล์เพิ่มเติม แต่มันเป็นเพียงโปรเจ็กต์เท่านั้น ไม่มีอีกแล้ว และคุณสามารถค้นหาลิงก์ได้ตลอดเวลา .

สิ่งเดียวที่ฉันอยากจะเตือนคุณคือ คุณควรเตรียมพร้อมว่า Android Studio จะแสดงให้คุณเห็นว่าโปรเจ็กต์ของคุณมีข้อผิดพลาด แม้ว่าจะไม่จริงก็ตาม :-) โชคดี!

เตรียมพร้อมที่ AndroidStudio จะแสดงให้คุณเห็นว่าโปรเจ็กต์ของคุณมีข้อผิดพลาด แม้ว่าจะไม่เป็นความจริงก็ตาม

person Slava    schedule 07.03.2017
comment
หมายเหตุประการหนึ่ง: คุณต้องใช้คลาส {module_package}.test.R เพื่อเข้าถึงทรัพยากรในโฟลเดอร์ androidTest/res - person user2137020; 24.01.2018

ไม่สามารถแสดงความคิดเห็นได้ แต่ต้องการเพิ่มคำตอบของ @Slava เพิ่มเติม หากใครสามารถเพิ่มเป็นความคิดเห็นได้ไม่ว่าอย่างไรก็ตาม

ลองระงับข้อผิดพลาดของผ้าสำลีด้วยคำตอบที่ยอมรับจากคำถามนี้ Android Studio ลบข้อผิดพลาดผ้าสำลี

person Lennin Marte    schedule 29.11.2019