Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用Scala backticks按字面意思打印测试用例_Scala_Unit Testing_Junit - Fatal编程技术网

是否可以使用Scala backticks按字面意思打印测试用例

是否可以使用Scala backticks按字面意思打印测试用例,scala,unit-testing,junit,Scala,Unit Testing,Junit,正如我们所知,我们可以使用backticks来声明一个方法名包含特殊字符,比如空格,这听起来是一个表示单元测试名的好方法。例如,我们可以像这样声明一个测试用例 class SampleTest { @Test def `it should return a space` { .... } } 当我运行这个测试用例时,我应该得到结果 [info] Test run started [info] Test SampleTest.it$u0020sho

正如我们所知,我们可以使用backticks来声明一个方法名包含特殊字符,比如空格,这听起来是一个表示单元测试名的好方法。例如,我们可以像这样声明一个测试用例

class SampleTest {    
    @Test
    def `it should return a space` {
      ....  
    }
}
当我运行这个测试用例时,我应该得到结果

[info] Test run started
[info] Test SampleTest.it$u0020should$u0020return$u0020a$u0020space started
[info] Test run finished: 0 failed, 0 ignored, 1 total, 0.538s
[info] ScalaTest
所有空格显示为
$u0020
。有没有任何方法可以用JUnit测试风格直接显示空间

[info] Test SampleTest.it should return a space started
我不能使用Scala规范测试,因为我必须在测试代码中使用JMockit


JUnit反映了方法名
它应该返回一个空格
,因为
它$u0020should$u0020return$u0020a$u0020space
在我看来,这里最安全的赌注是检查您是否可以连接到test reporter或在ScalaTest存储库中打开一个问题,要求打印“解码”名称而不是“编码”名称名字

您看到的名称是scalac如何用java字节码编码名称。在ScalaTest中直接将其打印出来可能被认为是一个小错误


看来你要替换sbt的记录器并不走运。sbt团队的JSURAT似乎表明,您不能替换sbt现有的记录器,而只能添加其他记录器。资料来源:

我已经回答了这个问题中的问题

-尝试解码堆栈跟踪和测试名称中的Scala名称。如果类路径上没有匹配的Scala库,则静默返回到未解码的名称

所以我们可以说

testOptions += Tests.Argument(TestFrameworks.JUnit, "-q", "-v", "-s")
build.sbt
文件中,然后查找方法

def `get one hundred if fifty plus fifty started` {}
测试结果表明

[info] Test ScalaTest.get one hundred if fifty plus fifty started
不是


不确定这是否是您想要的,或者它是否会起作用,但如果您使用sbt,您可能可以通过一个JUnit实现这一点。这不是JUnit,它反映的是unicode前面加了
$u
,而是scalac。如果我没有弄错的话,Scala的反射API有一个编码/解码这些的方法。
[info] Test ScalaTest.get$u0020one$u0020hundred$u0020if$u0020fifty$u0020plus$u0020fifty started