为什么Kotlin允许在不同的文件夹中使用两个具有相同名称和包的类(即:main和androidTest)?

时间:2017-07-03 06:53:57

标签: android kotlin android-espresso

我发现在Kotlin中可以有两个具有相同名称的类,在同一个包中但其中一个在androidTest文件夹中,并且在运行Espresso测试时,它将是使用的那个。 这在Java下是不可能的,我想知道它是否是预期的行为,或者是由于其他原因。

dispatch

在图片中,AppCollaborator,在Kotlin中存在于androidTest和main中,AS不会抱怨,但它确实与JavaCollaborator有关。

事实上,这种行为对于在测试期间加倍某些类非常有用(API等),但我不知道我是否可以依赖它。

1 个答案:

答案 0 :(得分:2)

支持此功能,因为在output-build-folder中您有不同的子文件夹 e.g。

  • 构建/类/爪哇/主
  • 建立/类/爪哇/测试
  • 建立/科特林类/主

您的类文件存储在不同的目标文件夹中,但在运行时它们具有相同的完全限定名称,因为包名和类名相同。

这不是kotlin问题。这是一个正常的名字冲突。避免使用相同的名称进行测试和实施。通常,测试的名称附加Test。在您的情况下:JavaCollaboratorTest