如何对Android Flavor/Variant进行单元测试(使用junit)- 类不存在

16

我们的应用程序有两种产品版本,其中一种版本拥有一个其他版本没有的类(FlavorSpecificClass)。在src/test文件夹中,我们为FlavorSpecificClass编写了一个junit测试,但在核心变体上编译时,该测试无法通过,因为该类在该变体上不存在。

我找不到一种方式来针对不同变体编写单独的单元测试,除非我注释掉对FlavorSpecificClass的引用,否则代码将无法在核心变体中编译。我该如何解决这个问题?

1个回答

18

假设您正在使用Gradle。

因此,您需要拥有另一个目录,该目录与您的“test”目录位于同一位置。将该目录命名为“test [BuildVariant]”,并在其中放置该构建变量的测试。

假设您已经建立了debug构建变量,如果您想测试仅在debug构建变量中的类,则您的目录结构将如下所示:

-debug/java/...
-main/java/...
-test/java/[your tests]
-testDebug/java/[your tests for build variant debug]

是的,使用Gradle。我尝试过这个方法,当选择debug变体时,它可以仅运行testDebug文件夹下的测试,但问题在于主要变体由于仅存在于debug中的类而无法编译。该类仅在testDebug文件夹下的测试中提到,但主要变体仍无法编译和运行。 - DDM
那意味着你的主要变体需要那个类存在。你可能需要在所有变体中添加该类。其他变体可能具有无操作方法。 - Gaurav Vashisth
1
我们找到了解决方法。当我创建了testDebug文件夹后,我选择新建->文件夹->Java文件夹来创建java文件夹。这会自动将“src/testDebug/java”添加到build.gradle中的主要sourceSet中。正确的做法是使用新建->目录来创建java文件夹,这样就不会修改build.gradle文件了。 - DDM
@GauravVashisth,你能告诉我如何将某些口味的单元测试组合起来,并将其设置在某些口味的源集中吗? - Akhil Dad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接