diff --git a/log4j-server/src/test/java/org/apache/logging/log4j/server/AbstractSocketServerTest.java b/log4j-server/src/test/java/org/apache/logging/log4j/server/AbstractSocketServerTest.java
index 0b5fd2d..2e2c0d0 100644
--- a/log4j-server/src/test/java/org/apache/logging/log4j/server/AbstractSocketServerTest.java
+++ b/log4j-server/src/test/java/org/apache/logging/log4j/server/AbstractSocketServerTest.java
@@ -190,7 +190,7 @@
         socketAppender.start();
         final ListAppender listAppender = new ListAppender("Events", serverFilter, null, false, false);
         listAppender.start();
-        final PatternLayout layout = PatternLayout.newBuilder().withPattern("%m %ex%n").build();
+        final PatternLayout layout = PatternLayout.newBuilder().setPattern("%m %ex%n").build();
         final ConsoleAppender console = ConsoleAppender.createDefaultAppenderForLayout(layout);
         final Logger serverLogger = ctx.getLogger(this.getClass().getName());
         serverLogger.addAppender(console);
@@ -229,16 +229,15 @@
             final Layout<? extends Serializable> socketLayout) {
         // @formatter:off
         return SocketAppender.newBuilder()
-                .withProtocol(this.protocol)
-                .withHost("localhost")
-                .withPort(this.port)
-                .withReconnectDelayMillis(-1)
-                .withName("test")
-                .withImmediateFlush(true)
-                .withImmediateFail(false)
-                .withIgnoreExceptions(false)
-                .withLayout(socketLayout)
-                .withFilter(socketFilter)
+        .setProtocol(this.protocol)
+        .setHost("localhost")
+        .setPort(this.port)
+        .setReconnectDelayMillis(-1)
+        .setName("test")
+        .setImmediateFlush(true)
+        .setImmediateFail(false)
+        .setIgnoreExceptions(false)
+        .setLayout(socketLayout).setFilter(socketFilter)
                 .build();
         // @formatter:on        
     }
diff --git a/log4j-server/src/test/java/org/apache/logging/log4j/server/SslXmlSocketServerTest.java b/log4j-server/src/test/java/org/apache/logging/log4j/server/SslXmlSocketServerTest.java
index 42a9e9e..6d08723 100644
--- a/log4j-server/src/test/java/org/apache/logging/log4j/server/SslXmlSocketServerTest.java
+++ b/log4j-server/src/test/java/org/apache/logging/log4j/server/SslXmlSocketServerTest.java
@@ -53,17 +53,16 @@
             final Layout<? extends Serializable> socketLayout) {
         // @formatter:off
         return SocketAppender.newBuilder()
-                .withProtocol(this.protocol)
-                .withHost("localhost")
-                .withPort(this.port)
-                .withReconnectDelayMillis(-1)
-                .withName("test")
-                .withImmediateFlush(true)
-                .withImmediateFail(false)
-                .withIgnoreExceptions(false)
-                .withLayout(socketLayout)
-                .withFilter(socketFilter)
-                .withSslConfiguration(sslConfiguration)
+        .setProtocol(this.protocol)
+        .setHost("localhost")
+        .setPort(this.port)
+        .setReconnectDelayMillis(-1)
+        .setName("test")
+        .setImmediateFlush(true)
+        .setImmediateFail(false)
+        .setIgnoreExceptions(false)
+        .setLayout(socketLayout).setFilter(socketFilter)
+                .setSslConfiguration(sslConfiguration)
                 .build();
         // @formatter:on        
     }
