在咖啡测试中,注解被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() } } 

问题是由于代码混淆。 在这种情况下,因为我们希望自动化的变体尽可能接近地发布,混淆被添加到用于自动化测试的构建变体中。 该解决方案是添加一个proguard-test-rules.pro文件进行测试与以下几行:

 -ignorewarnings -keepattributes *Annotation* -dontnote junit.framework.** -dontnote junit.runner.** -dontwarn android.test.** -dontwarn android.support.test.** -dontwarn org.junit.** -dontwarn org.hamcrest.** -dontwarn com.squareup.javawriter.JavaWriter -keep class path.to.tests.* 

并添加到build.gradle中的构建变体:

 testProguardFile 'proguard-test-rules.pro'