Estoy usando Android Studio para crear una aplicación con kotlin. Estoy tratando de realizar una prueba unitaria de mi clase MainActivity y, dado que uso la API 28, necesito otorgar permisos para ejecutar las pruebas unitarias. Coloqué @get:Rule var allowRule = GrantPermissionRule.grant(android.Manifest.permission.RECORD_AUDIO) en la parte superior de mi clase de prueba, pero Android Studio me dice que GrantPermissionRule es una referencia sin resolver. Mi código está abajo.
Clase de actividad principal:
class MainActivity : AppCompatActivity(), MediaPlayer.OnCompletionListener { lateinit var recorder: MediaRecorder lateinit var player: MediaPlayer lateinit var file: File lateinit var button1: Button lateinit var button2: Button lateinit var button3: Button lateinit var tv1: TextView // coding180.com override fun onCreate(savedInstanceState: Bundle?) { // call the super class onCreate to complete the creation of activity // like the view hierarchy super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { getPermissionToRecordAudio() } tv1 = findViewById(R.id.tv1) as TextView button1 = findViewById(R.id.btnStart) as Button button2 = findViewById(R.id.btnStop) as Button button3 = findViewById(R.id.btnPlay) as Button ... }Clase de prueba:
@RunWith(RobolectricTestRunner::class) class MainActivityTest { @get:Rule var permissionRule = GrantPermissionRule.grant(android.Manifest.permission.RECORD_AUDIO) lateinit var testMainActivity: MainActivity @Before fun setup() { testMainActivity = MainActivity() } @Test @Throws(Exception::class) fun onCreateTest() { //Activity variables val intent = Intent() val bundle = Bundle() intent.putExtras(bundle) val controller = Robolectric.buildActivity(MainActivity::class.java, intent).create() val activity = controller.get() as Activity //Start activity controller.start() //Asserts assertFalse(activity.isFinishing) }No he podido encontrar a nadie más que tenga este problema. ¿Alguien sabe por qué Android Studio no reconoce GrantPermissionRule y cómo solucionarlo?
Su código se ve bien, agregue
androidTestImplementation 'com.android.support.test:rules:1.0.2' A su build.gradle