小编Alb*_*ert的帖子

在调试时检查内存hsqldb

我们在内存中使用hdsqldb来运行针对数据库运行的junit测试.在通过弹簧配置运行每个测试之前设置db.一切正常.现在,当测试失败时,可以方便地检查内存数据库中的值.这可能吗?如果是这样的话?我们的网址是:

jdbc.url = JDBC:HSQLDB:MEM:TESTDB; sql.enforce_strict_size =真

每次测试后都会销毁数据库.但是当调试器运行时,数据库也应该仍然存在.我尝试连接sqldb databaseManager.这工作,但我没有看到任何表或数据.任何帮助都非常感谢!

java unit-testing hsqldb

39
推荐指数
3
解决办法
3万
查看次数

Scala:进行隐式转换A-> B适用于选项[A] - >选项[B]

我正在尝试编写一个函数,当它们以通用方式包装在Option中时,重用我对Object A - > Object B的隐式转换,以便Option [A] - > Option [B]转换也工作.

我想出的是:

implicit def fromOptionToOption[A, B](from: Option[A])(implicit conversion: (A) => B): Option[B] = from.map(conversion(_))
Run Code Online (Sandbox Code Playgroud)

当我将一个(..)分配给一个值而不是当我分配一个Option val时,这是有效的; 请参阅以下控制台输出:

scala> trait T
defined trait T

scala> case class Foo(i: Int) extends T
defined class Foo

scala> case class Bar(i: Int) extends T
defined class Bar

scala> implicit def fromFooToBar(f: Foo):Bar = Bar(f.i)
fromFooToBar: (f: Foo)Bar

scala> implicit def fromBarToFoo(b: Bar):Foo = Foo(b.i)
fromBarToFoo: (b: Bar)Foo

scala> implicit def fromOptionToOption[A, B](from: Option[A])(implicit conversion: …
Run Code Online (Sandbox Code Playgroud)

scala scala-option

21
推荐指数
2
解决办法
4058
查看次数

SBT清理钩子在测试中

SBT有一个很好的钩子,允许你在所有测试运行后执行任意代码:

testOptions in Test += Tests.Cleanup( () => println("Cleanup"))
Run Code Online (Sandbox Code Playgroud)

这样可行.我的问题是:我想做一些实际的清理(例如停止一些服务)但我无法导入我在同一个构建文件中声明的任何依赖项.有没有办法做到这一点?我想我需要将这些放在sbt类路径或其他东西上,但我似乎无法在文档中找到它.

PS我可能在错误的位置执行此操作,是否有更好的地方在所有测试运行后关闭事物?)

scala sbt

8
推荐指数
1
解决办法
1391
查看次数

Scala:创建一个通用的Quartz Job类

我们使用quartz(java API)进行作业调度.这很好用.现在我试图用它来概括一些事情.quartz api需要一个作业类作为参数来扩展Job接口.这使得通过构造函数传递参数变得不可能.

我们有一组作业应该都一样,执行检查,如果是,则调用一个动作,例如:

class SimpleJob extends Job {

def execute(context: JobExecutionContext) {
  val check = classOf[SimpleCheck].asInstanceOf[Class[Check]].newInstance()
  val result = check.execute(context.getJobDetail.getJobDataMap)

  if (result.shouldInvokeAction) {
    Action(result).execute
  }
}
Run Code Online (Sandbox Code Playgroud)

然后通过调用实例化石英作业:

newJob(classOf[SimpleJob]).with...
Run Code Online (Sandbox Code Playgroud)

这有效.

目标是为不同类型的检查重用这个逻辑问题:我可以使用scala类型系统,我可以使用一个类型的JobClass,可以重复使用它来执行Check的任何子类吗?

我想出了以下解决方案:

class GenericJobRule[J <: Check](implicit m: Manifest[J]) extends Job {

  def execute(context: JobExecutionContext) {
    val check = m.erasure.newInstance().asInstanceOf[J]
    val result = check.execute(context.getJobDetail.getJobDataMap)

    if (result.shouldInvokeAction) {
      Action(result).execute
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在可以像这样实例化一个作业:

newJob(classOf[GenericJobRule[PerformanceCheck]])
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我认为实例化和转换类型绕过了类型检查的整个想法.有没有更好的方法来做到这一点?也许我们应该重新考虑我们的设计......

谢谢,艾伯特

scala quartz-scheduler

5
推荐指数
1
解决办法
1799
查看次数

使用选项值构造Map

我想建立一个像这样的地图:

  def one = "one"
  def two = "two"
  def three = Some("three")

  Map[String, String]("one" -> one, "two" -> two, "three" -> three)
Run Code Online (Sandbox Code Playgroud)

这将无法编译,因为方法三返回Option而不是String.我可以这样做:

Map[String, String]("one" -> one, "two" -> two) ++ three.map(t => Map("three" -> t)).getOrElse(Map.empty[String, String])
Run Code Online (Sandbox Code Playgroud)

现在它只会在列表中添加选项.

但必须有一种更优雅的方式.(例如,lift-json知道如何在构造JValue时过滤掉Options).

有什么建议?(PS我在这里简化了问题)

scala

3
推荐指数
1
解决办法
235
查看次数