首页 > 解决方案 > 如何在 intellij 中为播放框架应用程序运行单元测试

问题描述

我尝试在 intellij 中的play framework java starter example上运行单元测试,但它似乎不起作用。

我下载了项目并通过 SBT 导入将其导入 intellij。

当我尝试从 intellij 运行测试时,我得到“找不到类:”UnitTest“空测试套件”

在此处输入图像描述

如果我运行 SBT 测试任务,则测试正在运行并通过。

当我在运行 SBT 测试任务后开始从 intellij 运行测试时,测试运行并通过。就像intellij没有编译项目

我正在使用 intellij 终极版 2018.2 并拥有 scala 插件(v 2018.2.11)

我怎样才能使这项工作?

编辑(响应@hce)

我将intellij升级到最新版本:2018.3.2(找不到2018.3.5)但我仍然遇到类似的问题。

我从一个新下载的入门项目开始。导入 sbt 项目:

在此处输入图像描述

在此处输入图像描述

然后尝试编译,报错:

在此处输入图像描述

我设法通过配置 intellij 使用 play2 编译器来解决编译问题(“为此项目使用 play2 编译器”)

在此处输入图像描述

然后我尝试运行测试,但intellij抱怨它找不到类

在此处输入图像描述

这是由 intellij 创建的运行配置。类名(UnitTest)标记为红色......

在此处输入图像描述

你的环境有什么不同吗?

我的过程有什么问题吗?

标签: javaunit-testingintellij-ideaplayframework

解决方案


我使用 IntelliJ 2018.3.5 和 Scala 插件对其进行了测试。它运作良好。所以原因似乎在于您的项目的配置。如果您可以提供运行/调试配置和设置,将会很有帮助。有很多原因。您可以尝试以下...

  • 确保使用 java 1.8 作为项目 jdk。
  • 使用 sbt 1.2.1
  • 检查您的运行/调试配置。
  • 文件 -> 使缓存无效/重新启动...
  • 构建 --> 重建项目
  • 运行 --> 编辑配置 / 删除 Junit / 应用并重新启动您的测试。自动创建新的 Junit 配置

编辑: 在@NirBrachel 的评论之后,解决方案是使用 sbt-shell 编译项目。(我建议清理、编译和测试)。

sbt-shell 清理、编译、测试

您可以在导入期间自动执行此操作:

![激活 sbt-shell 进行导入和构建

为什么? 信息:默认禁用 play framework 2.x 的 sbt 编译

您可以尝试在设置中激活 Play2 框架...

在此处输入图像描述

警告:这个设置对我不起作用,因为它不是由 IntelliJ 保存的。我还没弄清楚为什么。

编辑请参阅此链接以了解可能的原因。


推荐阅读