如何在 intellij 中为播放框架应用程序运行单元测试
Posted
技术标签:
【中文标题】如何在 intellij 中为播放框架应用程序运行单元测试【英文标题】:how to run unit tests for a play framework application within intellij 【发布时间】:2018-12-25 06:35:37 【问题描述】:我尝试在 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)标记为红色...
你的环境有什么不同吗?
我的流程有什么问题吗?
【问题讨论】:
【参考方案1】:我使用 IntelliJ 2018.3.5 和 Scala 插件对其进行了测试。它运作良好。 所以原因似乎在于您的项目的配置。 如果您可以提供运行/调试配置和设置,将会很有帮助。 有很多原因。 您可以尝试以下...
确保使用 java 1.8 作为项目 jdk。 使用 sbt 1.2.1 检查您的运行/调试配置。 文件 -> 使缓存无效/重新启动... 构建 --> 重建项目 运行 --> 编辑配置/删除 Junit / 应用并重新启动测试。自动创建新的 Junit 配置编辑: 在@NirBrachel 的 cmets 之后,解决方案是使用 sbt-shell 编译项目。 (我建议清理、编译和测试)。
您可以在导入期间自动执行此操作:
为什么? 信息:默认禁用 play framework 2.x 的 sbt 编译
您可以尝试在设置中激活 Play2 框架...
警告:此设置对我不起作用,因为 IntelliJ 未保存它。 我还没找到原因。
编辑请参阅this link 了解可能的原因。
【讨论】:
您概述的过程正在运行。谢谢 :) bubr 我不明白为什么我必须通过 sbt?为什么 intellij 不独立编译文件,或者运行 sbt 编译本身。我有点希望它更简单 嗨@NirBrachel,我再次编辑了答案并将其简化为问题解决方案。还解释了原因。 谢谢。这很好用。我认为“为这个项目使用 play 2 编译器”设置应该已经解决了这个问题。这似乎是一个 intellij 错误 嗨@NirBrachel 似乎在关闭并重新打开解决方案后,可以设置 play2 复选框。另见我的回答:***.com/questions/54056944/… 嗨@hce。对我来说,问题不在于保存复选框的状态。它被保存了。但是如果我删除“目标”文件夹并尝试运行测试,我会得到上述结果“进程完成,退出代码 1 找不到类:“UnitTest”。什么都没有编译。但是如果我创建一个新的 Play2 运行配置,然后按下运行按钮,那么应用程序就会被编译并运行。这是复选框集【参考方案2】:我使用 Scala 插件和 Play Framework。我可以通过 3 种方式运行测试:
从 IDE 简单运行 1 次测试(但我无法通过这种方式运行包中的所有测试) 从 sbt 运行测试 使用此配置运行测试(它允许在覆盖范围内运行测试):对不起我的英语。
【讨论】:
以上是关于如何在 intellij 中为播放框架应用程序运行单元测试的主要内容,如果未能解决你的问题,请参考以下文章
播放框架 sorm intellij - 无法解析符号 sorm
如何将 IntelliJ 与 Play Framework 和 Scala 一起使用
我们如何让 NSTimer 在 iOS 中为我的音频播放器在后台运行
如何在intellij中为maven命令行项目添加程序参数?