以下代码片段无法在 javac 版本 17 (Temurin) 上编译
class Instanceof {
static void doesNotWork(Object o) {
if (o == null) {
throw new Error();
} else if (!(o instanceof String s)) {
throw new Error();
}
System.out.println(s); // error here
}
}
Run Code Online (Sandbox Code Playgroud)
它会生成此错误:找不到符号
cannot find symbol
symbol: variable s
location: class Instanceof
Run Code Online (Sandbox Code Playgroud)
然而,以下(在我看来)等效的变体是有效的: 使用显式的 else 块:
static void doesWork(Object o) {
if (o == null) {
throw new Error();
} else if (!(o instanceof String s)) {
throw new Error();
} else …Run Code Online (Sandbox Code Playgroud) 有时,但并非总是如此,在运行端到端测试时,我们会遇到 ConnectRefused 异常。这只发生在 chrome 上,但不会发生在 firefox 上。对于我们来说,这种情况发生在测试期间,即测试正确运行一段时间后。
我们正在使用 docker 镜像selenium/standalone-chrome:3.141.59-vanadium。(由于另一个问题,我们降级了-zinc。)docker 镜像作为 docker-compose 的一部分运行,其中还包含我们的应用程序/数据库。
测试本身是使用 JUnit5 和 Selenium java 在 docker-compose 之外执行的org.seleniumhq.selenium:selenium-java:jar:3.141.59:compile。
所有内容都使用 docker 执行器在 GitLab 运行器上运行。这意味着一切都围绕着另一个 docker 层,但这可能不相关。
实际的异常是
org.openqa.selenium.WebDriverException: java.net.ConnectException: Connection refused (Connection refused)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'runner-_f3Cf_kC-project-44-concurrent-0', ip: '172.17.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.0-8-amd64', java.version: '11.0.5'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 77.0.3865.75, chrome: {chromedriverVersion: 77.0.3865.40 (f484704e052e0..., userDataDir: …Run Code Online (Sandbox Code Playgroud)