我在跨模块测试应用程序共享代码时遇到问题。
我在TestCoroutineContextProvider片段中放置了几个类(CoroutinesTestRulepresentation)。
为了在单元测试和UI测试之间共享代码,我在presentation build.gradle中具有以下内容:

sourceSets {
        test {
            java.srcDirs += "$projectDir/src/testShared"
        }

        androidTest {
            java.srcDirs += "$projectDir/src/testShared"
        }
    }

这样,我认为我可以在ViewModel和Fragment测试中访问这两个文件。
不过,尽管文件已正确导入并且没有IDE错误,但是在尝试运行测试时,我得到以下信息:
e: /features/account/src/test/java/me/myapp/account/AccountViewModelTest.kt: (35, 30): Unresolved reference: CoroutinesTestRule
和其他文件相同。

难道我做错了什么?

在此先多谢!

最佳答案

您需要执行以下操作才能在单元测试和已测试的测试之间共享代码:

  • 在您的应用程序级别build.gradle文件中,添加以下内容:
  • sourceSets {
    
            // Share test utils between unit and instrumented tests
            test.java.srcDirs += 'src/sharedTest/kotlin'
            androidTest.java.srcDirs += 'src/sharedTest/kotlin'
        }
    
    其中sharedTest是共享实用程序将进入的目录/模块名称
  • 转到build.gradle所在的模块,然后导航到src并创建一个名为sharedTest的目录,并在其中创建kotlin
  • 右键单击->标记为-> Test Sources Root,将kotlin目录标记为“Test Sources Root”,以便IDE将其显示为测试目录
  • 将您的测试工具放入其中
  • 做gradle同步
  • 尽情享受!

  • 注意:即使在这之后有时,当您尝试使用这些共享实用程序时,IDE也会显示错误/警告,但是如果您运行这些测试,则通过gradle执行时它们也会通过。通常,在执行gradle同步或重新启动Android Studio之后,我已经看到此问题消失了

    10-07 19:35
    查看更多