小编Fab*_*ten的帖子

为什么在这种特殊情况下,instanceof 模式匹配不能与 else if 一起使用?

以下代码片段无法在 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)

java language-lawyer java-17

27
推荐指数
2
解决办法
1478
查看次数

测试运行期间硒铬连接被拒绝

有时,但并非总是如此,在运行端到端测试时,我们会遇到 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)

selenium selenium-chromedriver

5
推荐指数
0
解决办法
828
查看次数