diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 84b353e..7fff1f5 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -74,6 +74,7 @@
     * [KARAF-2366|https://issues.apache.org/jira/browse/KARAF-2366] - Cannot Update Factory Configuration Not Backed By A File With The "config:" Command
     * [KARAF-2367|https://issues.apache.org/jira/browse/KARAF-2367] - Config Not Released When Declarative Services Bundle Stopped
     * [KARAF-2368|https://issues.apache.org/jira/browse/KARAF-2368] - Commands with more than one argument have incorrect help string
+    * [KARAF-2375|https://issues.apache.org/jira/browse/KARAF-2375] - Remove WcTest and associated resources
     * [KARAF-2376|https://issues.apache.org/jira/browse/KARAF-2376] - Make PropertiesLoginModuleTest OS file separator agnostic
 
 ** Dependency upgrade
diff --git a/shell/commands/src/test/java/org/apache/karaf/shell/commands/WcTest.java b/shell/commands/src/test/java/org/apache/karaf/shell/commands/WcTest.java
deleted file mode 100644
index 96ebc2e..0000000
--- a/shell/commands/src/test/java/org/apache/karaf/shell/commands/WcTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*  http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied.  See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.karaf.shell.commands;
-
-import junit.framework.TestCase;
-
-import org.junit.Ignore;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.List;
-
-public class WcTest extends TestCase {
-
-    private static final String SMALL_FILE = "WcActionTestSmall.txt";
-    private static final String LARGE_FILE = "WcActionTestLarge.txt";
-
-    public void testEmptyStringWordCounts() throws Exception {
-        String string = "";
-        WcAction.WordCounts expected = new WcAction.WordCounts();
-        WcAction.WordCounts actual = getWordCounts(string);
-        assertEquals(expected, actual);
-    }
-
-    public void testHelloWorldWordCounts() throws Exception {
-        String string = "Hello World";
-        WcAction.WordCounts expected = new WcAction.WordCounts();
-        expected.wordCount = 2;
-        expected.lineCount = 0;
-        expected.charCount = 11;
-        expected.byteCount = 11;
-        WcAction.WordCounts actual = getWordCounts(string);
-        assertEquals(expected, actual);
-    }
-
-    @Ignore("Disabled temporarily")
-    public void testLargeStringWordCounts() throws Exception {
-        InputStream stream = WcTest.class.getResourceAsStream(LARGE_FILE);
-
-        WcAction.WordCounts expected = new WcAction.WordCounts();
-        expected.wordCount = 487;
-        expected.lineCount = 34;
-        expected.charCount = 3307;
-        expected.byteCount = 3307;
-
-        WcAction.WordCounts actual = getWordCounts(stream);
-        assertEquals(expected, actual);
-    }
-
-    @Ignore("Disabled Temporarily")
-    public void testOneFileWordCounts() throws Exception {
-        File file = new File(WcTest.class.getResource(LARGE_FILE).toURI());
-        List<File> files = Arrays.asList(file);
-
-        WcAction wcAction = new WcAction();
-        wcAction.setDefaultOptions();
-
-        String result = wcAction.getFilesWordCounts(files);
-
-        assertEquals("A single file report should not contain a total count row", "\t34\t487\t3307\tWcActionTestLarge.txt\n", result);
-    }
-
-    @Ignore("Disabled Temporarily")
-    public void testThreeFilesWordCounts() throws Exception {
-        File smallFile = new File(WcTest.class.getResource(SMALL_FILE).toURI());
-        File largeFile = new File(WcTest.class.getResource(LARGE_FILE).toURI());
-
-        List<File> files = Arrays.asList(smallFile, largeFile, smallFile);
-
-        WcAction wcAction = new WcAction();
-        wcAction.setDefaultOptions();
-
-        String result = wcAction.getFilesWordCounts(files);
-
-        assertEquals("A single file report should not contain a total",
-                "\t11\t12\t34\tWcActionTestSmall.txt\n" +
-                        "\t34\t487\t3307\tWcActionTestLarge.txt\n" +
-                        "\t11\t12\t34\tWcActionTestSmall.txt\n" +
-                        "\t56\t511\t3375\ttotal"
-                , result);
-    }
-
-    public WcAction.WordCounts getWordCounts(String string) throws Exception {
-        InputStream inputStream = new ByteArrayInputStream(string.getBytes());
-        return getWordCounts(inputStream);
-    }
-
-    public WcAction.WordCounts getWordCounts(InputStream inputStream) throws Exception {
-        WcAction wcAction = new WcAction();
-        return wcAction.getWordCounts(inputStream);
-    }
-
-    public void assertEquals(WcAction.WordCounts expected, WcAction.WordCounts actual) {
-        assertEquals("The expected wordCount should be equal", expected.wordCount, actual.wordCount);
-        assertEquals("The expected lineCount should be equal", expected.lineCount, actual.lineCount);
-        assertEquals("The expected charCount should be equal", expected.charCount, actual.charCount);
-        assertEquals("The expected byteCount should be equal", expected.byteCount, actual.byteCount);
-    }
-
-}
diff --git a/shell/commands/src/test/resources/org/apache/karaf/shell/commands/WcActionTestLarge.txt b/shell/commands/src/test/resources/org/apache/karaf/shell/commands/WcActionTestLarge.txt
deleted file mode 100644
index bb8c071..0000000
--- a/shell/commands/src/test/resources/org/apache/karaf/shell/commands/WcActionTestLarge.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-Vestibulum egestas pulvinar lacus in congue. Phasellus nunc magna, sodales eu vestibulum eget, accumsan eu nisi.
-Nulla hendrerit mattis vehicula. Nullam lacinia metus in nulla convallis bibendum. Quisque vel tortor sit amet erat
-faucibus porta. Aliquam ac dui dui. Proin feugiat cursus dolor ut hendrerit. Curabitur quis odio et quam rutrum tincidunt.
-Quisque dignissim, elit et laoreet cursus, diam enim consectetur elit, eu tincidunt quam metus et nulla. Nam facilisis
-molestie interdum. Nunc adipiscing laoreet pretium. Donec pretium neque a dolor ornare adipiscing. Vestibulum ante ipsum
-primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec lacinia dictum risus, vitae ultrices lectus
-vehicula ac.
-
-Aenean id sodales lorem. Praesent malesuada elit ut urna elementum at egestas erat interdum. Cum sociis natoque penatibus
-et magnis dis parturient montes, nascetur ridiculus mus. Mauris egestas tempor elit, eget pretium est auctor at. Fusce
-vitae libero et leo facilisis tincidunt nec non libero. Pellentesque habitant morbi tristique senectus et netus et
-malesuada fames ac turpis egestas. Cras blandit mi vel enim vulputate in bibendum diam lacinia. Aliquam suscipit tempus
-ullamcorper. Proin viverra leo eget lacus elementum convallis vitae a tortor. Nullam vel ultricies magna. Aliquam
-laoreet odio sit amet velit rutrum pulvinar. Integer vel justo ipsum. Class aptent taciti sociosqu ad litora torquent
-per conubia nostra, per inceptos himenaeos. Vivamus vel odio quam, a vestibulum eros. Praesent augue purus, facilisis
-id commodo ut, suscipit sed sapien. Donec mollis, lectus nec fringilla dignissim, justo mauris sodales nisl, atpretium
-enim est ac nunc.
-
-Maecenas non nisl justo. Fusce interdum lorem in sem rhoncus consequat mattis vitae dolor. Donec mollis erat ac mi
-porttitor sagittis feugiat turpis porttitor. Ut in nulla id enim posuere hendrerit non mollis purus. Donec sit amet
-tellus nunc. Aenean in leo non sem vehicula euismod. Praesent porta feugiat leo non adipiscing. Sed neque arcu, laoreet
-a congue scelerisque, bibendum sit amet quam. Morbi fermentum iaculis justo, ac ullamcorper nisl varius vitae. Aenean
-aliquam egestas tellus, id dignissim magna interdum id.
-
-Suspendisse urna dolor, vehicula ac vulputate sed, gravida sed tortor. Nulla malesuada ipsum orci, nec pharetra est.
-Etiam vestibulum vulputate orci, sit amet pellentesque neque mattis vel. Suspendisse imperdiet, nisl eu consectetur
-luctus, velit magna adipiscing metus, aliquam dictum enim enim non tortor. Vestibulum ante ipsum primis in faucibus
-orci luctus et ultrices posuere cubilia Curae; Fusce in est eu elit dictum euismod non porta ipsum. Morbi mollis
-vestibulum mattis. Cras eu sapien eros. Phasellus pellentesque vehicula sapien, id tincidunt dolor adipiscing vel.
-
-Suspendisse potenti. Vivamus sed elit mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac
-turpis egestas. Mauris sit amet erat nec nibh sodales ornare. Class aptent taciti sociosqu ad litora torquent per conubia
-nostra, per inceptos himenaeos. Vivamus nec tellus ligula, eget laoreet lacus. Nullam interdum elementum tellus sit
-amet interdum. Aenean vel lorem eu nunc eleifend ullamcorper sit amet eget quam. Curabitur at sapien nec metusmalesuada
-tristique. Etiam in pellentesque risus.
\ No newline at end of file
diff --git a/shell/commands/src/test/resources/org/apache/karaf/shell/commands/WcActionTestSmall.txt b/shell/commands/src/test/resources/org/apache/karaf/shell/commands/WcActionTestSmall.txt
deleted file mode 100644
index e88ba8e..0000000
--- a/shell/commands/src/test/resources/org/apache/karaf/shell/commands/WcActionTestSmall.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-
-Hello World.
\ No newline at end of file
