如何在ScalaTest中使用ScriptEngine

乔布罗斯

以下测试应通过,但不能通过

class EngineTest extends FunSuite {

  test("engine should not be null") {
    val manager: ScriptEngineManager = new ScriptEngineManager
    val engine: ScriptEngine = manager.getEngineByName("nashorn")
    assert(engine != null)
  }
}

manager.getEngineFactories()似乎是空的。为什么?如何初始化上下文?

被骗

您正在使用什么版本?这是sbt .13。

> console
[info] Starting scala interpreter...
[info] 
Welcome to Scala version 2.11.0 (OpenJDK 64-Bit Server VM, Java 1.7.0_25).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import javax.script._
import javax.script._

scala> new ScriptEngineManager().getEngineByName("scala")
res0: javax.script.ScriptEngine = scala.tools.nsc.interpreter.IMain@7078c799

scala> new ScriptEngineManager().getEngineByName("rhino")
res1: javax.script.ScriptEngine = com.sun.script.javascript.RhinoScriptEngine@5c854934

scala> new ScriptEngineManager().getEngineFactories
res2: java.util.List[javax.script.ScriptEngineFactory] = [com.sun.script.javascript.RhinoScriptEngineFactory@454ee4c0, scala.tools.nsc.interpreter.IMain$Factory@354e3bce]

等等,您询问了测试环境-

好吧,在我对解码更多sbt失去兴趣之前,添加了libraryDependencies:

"org.scala-lang" % "scala-compiler" % scalaVersion.value % "test",

启用查找Scala脚本引擎的位置:

  @Test def engines: Unit = {
    import javax.script._
    val all = new ScriptEngineManager().getEngineFactories
    Console println s"Found ${all.size}: $all"
    assert(all.size > 0)
  }

毫无疑问,有一种简单的方法可以直接将runtime:full-classpath添加到test:full-classpath。因为它是简单的构建工具,对吗?

对于Java 8上的Nashorn,请注意以下位置:

> set fullClasspath in Test += Attributed.blank(file(s"${util.Properties.javaHome}/lib/ext/nashorn.jar"))
[info] Defining test:fullClasspath
[info] The new value will be used by test:console, test:executeTests and 5 others.
[info]  Run `last` for details.
[info] Reapplying settings...
[info] Set current project to goofy (in build file:/home/apm/goofy/)
> test
Found 1: [jdk.nashorn.api.scripting.NashornScriptEngineFactory@7fa2239d]
[info] Passed: Total 10, Failed 0, Errors 0, Passed 10

更新:https//github.com/sbt/sbt/issues/1214

另外我想它仍然被认为是黑色艺术

// Somehow required to get a js engine in tests (https://github.com/sbt/sbt/issues/1214)

fork in Test := true

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ScalaTest中使用ScriptEngine

来自分类Dev

如何在C#中使用ScriptEngine

来自分类Dev

如何在Java测试文件中使用ScalaTest?

来自分类Dev

如何在ScalaTest中使用Specs2中的===语法

来自分类Dev

如何在Scalatest中使用forAll仅生成生成器的一个对象?

来自分类Dev

在断言异常时,如何知道何时在ScalaTest Matchers中使用“ a”,“ an”或“ the”?

来自分类Dev

通过Java ScriptEngine在JavaScript中使用jar

来自分类Dev

如何使用ScalaTest执行OR

来自分类Dev

在scalatest中使用什么代替符号?

来自分类Dev

如何在Scala中使用> =>?

来自分类Dev

如何在c ++中使用?

来自分类Dev

如何在SQL中使用NOT

来自分类Dev

如何在Haskell中使用(。)

来自分类Dev

如何在“ if”中使用空格?

来自分类Dev

如何在SQL中使用IF

来自分类Dev

如何在IndexError中使用If / Then

来自分类Dev

%如何在路径中使用

来自分类Dev

如何在Stata中使用*?

来自分类Dev

如何在TypeScript中使用“ then”?

来自分类Dev

如何在Haskell中使用(。)

来自分类Dev

如何在SQL中使用IF

来自分类Dev

如何在驴中使用&&?

来自分类Dev

如何在jQuery中使用or(||)

来自分类Dev

如何在<=中使用whereIn?

来自分类Dev

如何在类中使用 If

来自分类Dev

如何在grepl中使用“and”?

来自分类Dev

如何在宏中使用##?

来自分类Dev

如何在javascript中使用“+”

来自分类Dev

如何在 bash 中使用 ` in `