我正在使用selenium在Scala Web应用程序上执行集成测试.我想在测试失败时将页面的html截图或打印到控制台中.我目前的设置是使用Selenium 2.0和Spec的Scalatest.
无论如何要拦截故障或从AfterEach覆盖方法确定测试的状态?
是否有一个习惯用于为ScalaTest匹配器添加线索,以便线索将成为断言失败的一部分?我知道我现在可以像这样写一个ScalaTest断言:
withClue("expecting a header row and 3 rows of data") {
rowCount should equal(4)
}
Run Code Online (Sandbox Code Playgroud)
这是为断言添加线索的唯一语法吗?能够写一个断言看起来像这样的东西会很好:
rowCount should equal(4) because("expecting a header row and 3 rows of data")
Run Code Online (Sandbox Code Playgroud) 目前我正在使用IntelliJ Idea 15和Scalatest框架进行一些单元测试.我需要将自己的参数传递给测试,并以某种方式从代码中读取它们.例如:假设我有这样的课程
class Test extends FunSuite {
test("Some test") {
val arg = // here I want to get an argument which I want to pass. Something like args("arg_name")
println(arg)
assert(2 == 2)
}
}
Run Code Online (Sandbox Code Playgroud)
并且通过参数运行测试我想做类似的事情
test -arg_name=blabla
Run Code Online (Sandbox Code Playgroud)
所以,问题是如何传递这个论点以及如何获得它.
我的目的是生成一个可读的HTML测试报告,该报告将捕获功能测试引发的功能/场景.我正在使用FeatureSpec我的测试.(然后我可以将此报告显示给我的产品团队以获得他们的验收批准).
我在Play控制台上尝试了以下选项:
test-only -h target/html-report MySpecFile
Run Code Online (Sandbox Code Playgroud)
这个生成了一堆js和css文件,但我没有看到一个html文件.
我也尝试在我的sbt文件中添加这个:
testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-u", "target/test-reports")
Run Code Online (Sandbox Code Playgroud)
这只会生成一个xml文件.
非常感谢您的帮助.我用Google搜索了答案,但到目前为止未能获得有效的解决方案.
我刚刚开始在Coursera的Scala专业化中进行函数式编程.处理设置并浏览第一个视频.当我在Intellij中修改sbt时,我得到"找不到模块:org.scallatest#scalatest_2.11; 2.2.6"
[info]从/ Users/Nedim/development/webfonts811/SimpleName/project [info]加载项目定义将当前项目设置为SimpleName(在构建文件中:/ Users/Nedim/development/webfonts811/SimpleName /)[info]定义*: shellPrompt [info]没有任何设置或任务将使用新值.[info]重新应用设置... [info]将当前项目设置为SimpleName(在构建文件中:/ Users/Nedim/development/webfonts811/SimpleName /)[info]定义/:sbtStructureOutputFile [info]新值将由没有设置或任务.[info]重新应用设置... [info]将当前项目设置为SimpleName(在构建文件中:/ Users/Nedim/development/webfonts811/SimpleName /)[info]定义/:sbtStructureOptions [info]新值将由没有设置或任务.[info]重新应用设置... [info]将当前项目设置为SimpleName(在构建文件中:/ Users/Nedim/development/webfonts811/SimpleName /)[info]从/ Users /应用状态转换org.jetbrains.sbt.CreateTasks Nedim/Library/Application Support/IntelliJIdea15/Scala/launcher/sbt-structure-0.13.jar [info]将当前项目设置为SimpleName(在构建文件中:/ Users/Nedim/development/webfonts811/SimpleName /)[info] Updating { file:/ Users/Nedim/development/webfonts811/SimpleName /} simplename ... [info]解析org.scala-lang #scala-library; 2.11.8 ... [info]解析org.scallatest#scalatest_2.11; 2.2.6 ... [info]解析org.scallatest#scalatest_2.11; 2.2.6 ... [warn]模块未找到:org.scallatest#scalatest_2.11; 2.2.6 [warn] ==== local :试过[warn] /Users/Nedim/.ivy2/local/org.scallatest/scalatest_2.11/2.2.6/ivys/ivy.xml [warn] ==== jcenter:试过[warn] https:// jcenter .bintray.com/org/scallatest/scalatest_2.11/2.2.6/scalatest_2.11-2.2.6.pom [warn] ==== public:试过[warn] https:// repo 1.maven.org/maven2/org/scallatest/scalatest_2.11/2.2.6/scalatest_2.11-2.2.6.pom [info]解析org.scala-lang #scala-compiler; 2.11.8 ...... [ info]解析org.scala-lang#scala-reflect; 2.11.8 ... [info]解析org.scala-lang.modules#scala-xml_2.11; 1.0.4 ... [info]解析org.scala …
我想知道Try使用ScalaTest 检查失败内容的最佳方法。我目前正在做的事情看起来像这样:
"Subject" should "throw proper exceptions.." in {
a[IllegalArgumentException] should be thrownBy {
val tryValue = // some method call..
if (tryValue.isFailure) throw tryValue.failed.get
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我只是打开了异常并手动将其抛出。是否有更惯用的方式来实现同一目标?
我是scalatest和scalamock的新手.这是我在sbt文件中的内容
name := "cakepattern"
version := "0.1"
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "3.0.0" % "test",
"org.scalamock" %% "scalamock-core" % "3.1.1" % "test",
"org.scalamock" %% "scalamock-scalatest-support" % "3.1.1" % "test",
"org.scalacheck" %% "scalacheck" % "1.13.0" % "test"
)
Run Code Online (Sandbox Code Playgroud)
这是一个我试图嘲笑的课程
package config
import dto.User
import services.AuthServiceComponent
import org.scalatest.mockito.MockitoSugar._
import services.impl.DefaultUserAuthServiceComponent
trait MockAuthServiceComponent extends AuthServiceComponent{
val x = mock[AuthServiceLike]
type AuthService = x.type
override val userAuthService = x
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,sbt test:compile我得到以下错误
[error] missing or invalid dependency …Run Code Online (Sandbox Code Playgroud) 我正在使用scala 2.12。这是我的build.sbt文件
libraryDependencies ++= Seq(
"net.codingwell" %% "scala-guice" % "4.1.0",
"org.scalatest" %% "scalatest" % "3.0.3" % "test",
"org.scalamock" %% "scalamock-scalatest-support" % "3.5.0" % "test"
)
Run Code Online (Sandbox Code Playgroud)
我正在尝试为Guice编写一个测试模块,该模块也使用Mocking
我试过了
class TestModule extends ScalaModule with MockitoSugar{
val x = mock[TestPartialMock]
override def configure(): Unit = {
bind[Test1]
bind[Test2]
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了错误
Error:scalac: Error: requirement failed: package stubbing
java.lang.IllegalArgumentException: requirement failed: package stubbing
at scala.reflect.internal.Types$ModuleTypeRef.<init>(Types.scala:1879)
at scala.reflect.internal.Types$PackageTypeRef.<init>(Types.scala:1897)
at scala.reflect.internal.Types$TypeRef$.apply(Types.scala:2401)
at scala.reflect.internal.Types.typeRef(Types.scala:3553)
at scala.reflect.internal.Types.typeRef$(Types.scala:3536)
at scala.reflect.internal.SymbolTable.typeRef(SymbolTable.scala:16)
at s
Run Code Online (Sandbox Code Playgroud)
我也试过
class TestModule extends AbstractModule with ScalaModule …Run Code Online (Sandbox Code Playgroud) 因此,我们有一个Scala程序(使用Maven构建),我们想使用Scalatest进行测试。我们正在运行Scala 2.11.8和Scalatest 3.0.1(我们尝试了3.0.3无济于事)
当我们的测试使用assert()宏运行任何内容时,我们将收到以下错误:
error: can't expand macros compiled by previous versions of Scala
assert(true)
^
Run Code Online (Sandbox Code Playgroud)
它指向,true但是问题在于我们放入的任何内容assert()。我们的POM对Scalatest具有以下依赖性:
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_2.11</artifactId>
<version>3.0.1</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我们试图执行的代码是:
import org.scalatest.{FlatSpec, _}
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
@RunWith(classOf[JUnitRunner])
class Testing extends FlatSpec {
//test
var number = 0;
"An empty Set" should "have size 0" in {
assert(true)
}
}
Run Code Online (Sandbox Code Playgroud)
很多人说这是使用Scala 2.11的问题,但包括2.10依赖项,但我们使用的是2.11。任何帮助将非常感激。我还应该注意,我们使用Scala 2.10进行了尝试,并且可以正常工作。
以下scala代码工作正常,测试运行:
import org.scalatest._
import com.holdenkarau.spark.testing._
class DummyTest extends FunSuite with SharedSparkContext {
test("shared context only works inside test functions.") {
val myRDD = sc.parallelize(List(1,2,3,4))
}
}
Run Code Online (Sandbox Code Playgroud)
但是,以下scala代码导致sc.parallelize行上的java.lang.NullPointerException:
import org.scalatest._
import com.holdenkarau.spark.testing._
class DummyTest extends FunSuite with SharedSparkContext {
val myRDD = sc.parallelize(List(1,2,3,4))
test("shared context only works inside test functions.") {
assert(true)
}
}
Run Code Online (Sandbox Code Playgroud)
在测试函数之外使用SparkContext时,导致NullPointerException的原因是什么?