diff --git a/gogo/commands/src/test/java/org/apache/felix/gogo/commands/TestCommands.java b/gogo/commands/src/test/java/org/apache/felix/gogo/commands/TestCommands.java
index 1b3fc22..7d25977 100644
--- a/gogo/commands/src/test/java/org/apache/felix/gogo/commands/TestCommands.java
+++ b/gogo/commands/src/test/java/org/apache/felix/gogo/commands/TestCommands.java
@@ -19,8 +19,11 @@
 package org.apache.felix.gogo.commands;
 
 import java.util.List;
-import java.util.Collections;
 import java.util.Arrays;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
 
 import junit.framework.TestCase;
 import org.osgi.service.command.CommandSession;
@@ -32,10 +35,16 @@
 
     public void testCommand() throws Exception {
         Context c= new Context();
+        c.addCommand("capture", this);
         c.addCommand("my-action", new SimpleCommand(MyAction.class));
 
         // Test help
-        c.execute("my-action --help");
+        Object help = c.execute("my-action --help | capture");
+        assertTrue(help instanceof String);
+        assertTrue(((String) help).indexOf("My Action") >= 0);
+        assertTrue(((String) help).indexOf("First option") >= 0);
+        assertTrue(((String) help).indexOf("Bundle ids") >= 0);
+
 
         // Test required argument
         try
@@ -63,6 +72,19 @@
         assertEquals(Arrays.asList(4), c.execute("my-action --increment 3"));
     }
 
+    public String capture() throws IOException
+    {
+        StringWriter sw = new StringWriter();
+        BufferedReader rdr = new BufferedReader(new InputStreamReader(System.in));
+        String s = rdr.readLine();
+        while (s != null)
+        {
+            sw.write(s);
+            s = rdr.readLine();
+        }
+        return sw.toString();
+    }
+
     @Command(scope = "test", name = "my-action", description = "My Action")
     public static class MyAction implements Action
     {
