Android GrantPermissionRule未解析引用
我正在使用Android Studio与kotlin创建一个应用程序。我正在尝试对我的MainActivity类进行单元测试,因为我使用的是API 28,所以我需要授予权限才能运行单元测试。我将@get:Rule var permissionRule=GrantPermissionRule.grant(android.Manifest.permission.RECORD_AUDIO)放在测试类的顶部,但android Studio告诉我GrantPermissionRule是一个未解析的引用。我的代码如下 主要活动类别:Android GrantPermissionRule未解析引用,android,kotlin,Android,Kotlin,我正在使用Android Studio与kotlin创建一个应用程序。我正在尝试对我的MainActivity类进行单元测试,因为我使用的是API 28,所以我需要授予权限才能运行单元测试。我将@get:Rule var permissionRule=GrantPermissionRule.grant(android.Manifest.permission.RECORD_AUDIO)放在测试类的顶部,但android Studio告诉我GrantPermissionRule是一个未解析的引用。我
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
...
}
测试等级:
@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)
}
我找不到其他有这个问题的人。有人知道为什么Android Studio不识别GrantPermissionRule以及如何修复它吗?您的代码看起来不错,添加
androidTestImplementation 'com.android.support.test:rules:1.0.2'
到您的
build.gradle
是的,我的build.gradle中有这个,但它仍然无法识别GrantPermissionRule。@HeatherMinke您是否能够导入文件顶部的import android.support.test.rule.GrantPermissionRule
?