为什么此类型相等性检查在SBT中失败,但在我的IDE中成功?

时间:2019-06-10 08:50:39

标签: scala reflection types sbt equality

在编写单元测试时遇到一个有趣的问题,当我通过IDE(IntelliJ Idea)运行测试时,特定类型的Scala代码检查成功,而当我通过category通过SBT运行测试时失败。有问题的代码就是这一行:

sbt test

,标记为tag == typeTag[Unit] 。因此检查是通过反射确定参数类型是否为Unit,仅此而已。我知道相等性检查存在缺陷,我应该使用Scala的反射API运算符,我已经对其进行了重写,现在它通过我的IDE和SBT通过了测试:

TypeTag[A]

我的问题不是如何解决我的问题(因为已经存在),而是为什么有缺陷的检查在通过我的IDE运行时总是会成功,而在通过SBT运行时总是会失败,这两个操作之间的区别是什么造成这种差异?

(某些版本信息:我在代码中使用的是JRE 11.0.2,Scala 2.12和SBT 1.2.8。编辑:如下所述,它也发生在Java 8上

编辑:按要求输入我的编译器设置。原谅审查,我宁愿小心公司的细节。 enter image description here

我在build.sbt中使用的scalacOptions,编译器插件和测试标志:

tag.tpe =:= typeOf[Unit]

0 个答案:

没有答案