scala - SBT 在完成测试时断开数据库客户端
问题描述
我正在尝试从 sbt 任务执行主项目中的代码:
lazy val disconnectClients = taskKey[Unit]("Disconnect postgres clients after tests.")
disconnectClients := {
(testLoader in Test).value
.loadClass("com.companyname.DBDisconnector")
.getMethod("close")
.invoke(null).asInstanceOf[Unit]
}
DBDisconnector在哪里:
class DBDisconnector {
...
def close(): Unit = {
println("-------> DISCONNECT <--------")
ds.close()
}
}
但什么也没发生..我做错了什么?谢谢!
解决方案
将实例化对象传递给invoke
而不是null
像这样
lazy val disconnectClients = taskKey[Unit]("Disconnect postgres clients after tests.")
disconnectClients := {
val loader = (testLoader in Test).value
val cls = loader.loadClass("example.DBDisconnector")
val disconnector = cls.newInstance()
cls.getMethod("close").invoke(disconnector)
}
Tests.Cleanup
是实现类似清理的另一种方法:
testOptions in Test += Tests.Cleanup { loader =>
val cls = loader.loadClass("example.DBDisconnector")
val disconnector = cls.newInstance()
cls.getMethod("close").invoke(disconnector)
}
推荐阅读
- aws-lambda - Lambda 授权方不尊重资源
- spring-cloud-feign - openfeign 和 feign 的区别
- python - Pandas:如何使用其他数据框的列替换数据框中的值
- arduino - 如何在同一代码中使用基于 Web 的代码和真实按钮?
- vb.net - DataGridView 到 Word 列标题未显示
- bixby - bixby 如何读取不显示的文本?
- java - 将字符串转换为 ParseObject
- spring - Spring Boot:静态内容正确提供 CSS 但不提供 JS
- twig - 在 Craft 3 中使用 {% requireLogin %} 时如何设置自定义重定向 URL?
- php - 为什么我在尝试发送电子邮件以使用 phpmailer 激活新用户帐户时收到此错误