我使用下一个版本的junit 5
<junit.jupiter.version>5.2.0</junit.jupiter.version>
<junit.platform.version>1.2.0</junit.platform.version>
<junit.vintage.version>5.2.0</junit.vintage.version>
Run Code Online (Sandbox Code Playgroud)
Kotlin版本是
<kotlin.version>1.2.31</kotlin.version>
Run Code Online (Sandbox Code Playgroud)
我尝试将junit 5中的新断言功能与kotlin一起使用
assertAll("person",
{ assertEquals("John", person.firstName) },
{ assertEquals("Doe", person.lastName) }
)
Run Code Online (Sandbox Code Playgroud)
但是代码分析器说找不到该方法的合适版本。
Error:(28, 9) Kotlin: None of the following functions can be called with the arguments supplied:
public fun assertAll(vararg executables: () -> Unit): Unit defined in org.junit.jupiter.api
public fun assertAll(heading: String?, vararg executables: () -> Unit): Unit defined in org.junit.jupiter.api
Run Code Online (Sandbox Code Playgroud)
如果我像这样编写代码,它就可以正常工作。诀窍是什么?
assertAll("person",
Executable { assertEquals("John", person.firstName) },
Executable { assertEquals("Doe", person.lastName) }
)
Run Code Online (Sandbox Code Playgroud) 最初的问题是docker的java应用程序由于内存使用而被OOM杀死。所以我开始使用 NMT 来理解为什么消耗比预期多。JVM 版本为 1.8.0_212,支持容器。docker 与下一个 java 选项一起启动
JAVA_OPTS='-XX:+AlwaysPreTouch -Xmx128m -Xms128m -XX:MaxMetaspaceSize=150m -XX:ReservedCodeCacheSize=100m -XX:+UseStringDeduplication -XX:+PrintFlagsFinal -XshowSettings:vm -XX:NativeMemoryTracking=detail' ... -m="450m" --cpu-shares="256" docker-image
Run Code Online (Sandbox Code Playgroud)
本机内存跟踪:
Total: reserved=1464054KB +843KB, committed=344578KB +1359KB
...
- Class (reserved=1124594KB +19KB, committed=85066KB +275KB)
(classes #15631)
(malloc=2290KB +19KB #20081 +27)
(mmap: reserved=1122304KB, committed=82776KB +256KB)
...
Run Code Online (Sandbox Code Playgroud)
所有数字均符合预期。唯一的问题是 Class 字段,因为它显示保留值约为 1GB,是否可以以某种方式减少?