java - 禁用测试文件夹中类的重复类错误 - Android Studio/IntelliJ

标签 java android unit-testing intellij-idea

我需要能够关闭“重复类”错误和视觉指示器(红色波浪下划线),当您在同一个包中有两个名称相同但位于不同文件夹中的类时,就会出现这种情况。在这种情况下,“主要”和“测试”。

背景

可以说这是 this 的副本发布,但是,我认为一些背景是为了避免一些明显的回复(而且,该帖子没有令人满意的答案)。

这个问题与单元测试和协作者模拟有关。众所周知,Android 违反了 java 开发的基本“包含优于继承”准则。这就是为什么您需要 Robolectric 来测试生命周期覆盖而不会使框架崩溃您的测试。您的协作者不能以正常方式被模拟和注入(inject),因为被测试的类协作者。

在这种情况下,我的大型企业客户进一步违反了“包含优于继承”的准则,他们从必须改用的 Activity 和 Fragments 添加了几层类扩展。我无法修改这些层,并且尝试模拟内部结构是不切实际的。最简单的解决方案是创建这个额外层的叶类的副本,为被测类提供单元测试友好的结果。

这行得通。当您运行单元测试时,测试重复项得到解决,而当您运行生产代码时,生产重复项得到解决。

这只是需要抑制的持续烦人的错误指示。

解决方法、IntelliJ 插件、自定义类加载器等 - 都会考虑(附有说明)。

最佳答案

它是硬编码的:source

唯一的方法是更改​​源代码并构建您自己的 IntelliJ - 但您将无法使用 Ultimate 版本。

making an agent to replace the method - HighlightClassUtil.checkDuplicateTopLevelClass

这可能会派上用场,因此您可以将其作为普通插件使用:How can I add a Javaagent to a JVM without stopping the JVM?

关于java - 禁用测试文件夹中类的重复类错误 - Android Studio/IntelliJ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38565115/

相关文章:

java - PowerMock 一次又一次的初始化错误

java - 完全合格的路径Vs。规范路径

java - 使用两个 fragment 库

asp.net-mvc - 如何对使用 FormsAuthentication 的 ASP.NET MVC Controller 进行单元测试?

java - 我们可以在 Java 中有条件地模拟对象吗?

java - Jetty WebSocket api 与标准 JSR 356 API

android - 如何在android中播放assets文件夹的子文件夹中的视频

android - 当用户同时从多个设备登录并且多个帐户已在同一设备上登录时使用 GCM

java - 通过Eclipse创建Android应用程序时出错

xcode - NSURL 书签在 Xcode Server 上的单元测试中失败