java@Before注释在浓缩咖啡测试中被kotlin忽略?
我用kotlin编写了这个测试类,并使用espresso来执行测试。但当我运行它时,用@Before注释的函数被完全忽略了。即使在调试测试并在其中放置断点时,它也不会通过该点。你知道为什么会这样吗?我一直在谷歌上搜索,但大多数例子都不使用@Before,或者干脆不提任何问题。 我还添加了logOut()函数以了解更多信息
PD:用java编写相同的代码非常有效
@RunWith(AndroidJUnit4::class)
class LoginTest {
@get: Rule val activityTestRule = ActivityTestRule(SplashActivity_::class.java)
private lateinit var user: User
@Before fun setUp() {
logOut()
}
@Test fun newUserWasLoggedIn() {
givenAnUser(UserFactory.randomUser)
itCanBeLoggedAsNewUser()
}
@Test fun oldUserWasLoggedIn() {
givenAnUser(UserFactory.oldUser)
itCanBeLoggedAsOldUser()
}
private fun itCanBeLoggedAsOldUser() {
oldUserLogin(user)
}
private fun itCanBeLoggedAsNewUser() {
newUserLogin(user)
}
private fun givenAnUser(user: User) {
this.user = user
}
}
fun logOut() {
goToSettingsView()
settingsView {
swipe(SwipeDirection.UP)
logOutButton.click()
if (isPasswordRequired()) {
createNewPasswordInDialog()
logOutButton.click()
}
buttonAccept.click()
}
}
# 1 楼答案
问题是由于代码混淆。在本例中,由于我们希望自动化的变体尽可能接近发布,模糊处理被添加到用于自动化测试的构建变体中。解决方案是添加proguard测试规则。用于测试的pro文件,包含以下行:
并在build中添加到build变量。格雷德尔: