diff --git a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/FrameWriterTest.java b/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/FrameWriterTest.java
index e392e85..dd93304 100644
--- a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/FrameWriterTest.java
+++ b/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/FrameWriterTest.java
@@ -61,6 +61,7 @@
     private final EncoderImpl encoder = new EncoderImpl(decoder);
 
     private ReadableBuffer bigPayload;
+    private ReadableBuffer littlePayload;
     private ByteBuffer buffer;
 
     @Before
@@ -77,6 +78,11 @@
         for (int i = 0; i < bigPayload.remaining(); ++i) {
             bigPayload.array()[i] = (byte) random.nextInt(127);
         }
+
+        littlePayload = ReadableBuffer.ByteBufferReader.allocate(16);
+        for (int i = 0; i < littlePayload.remaining(); ++i) {
+            littlePayload.array()[i] = (byte) random.nextInt(127);
+        }
     }
 
     @Test
@@ -298,9 +304,9 @@
         FrameWriter framer = new FrameWriter(encoder, Integer.MAX_VALUE, (byte) 0, spy);
 
         int channel = 16;
-        int payloadLength = bigPayload.capacity();
+        int payloadLength = littlePayload.capacity();
 
-        framer.writeFrame(channel, transfer, bigPayload, new PartialTransferHandler(transfer));
+        framer.writeFrame(channel, transfer, littlePayload, new PartialTransferHandler(transfer));
 
         ArgumentCaptor<TransportFrame> frameCatcher = ArgumentCaptor.forClass(TransportFrame.class);
         Mockito.verify(spy).log(eq(TransportImpl.OUTGOING), frameCatcher.capture());
