@Deployment(testable = false)
public static WebArchive createDeployment() {
    WebArchive war = ShrinkWrap.create(WebArchive.class).
            addClass(ParentServlet.class).
            addClass(ChildServlet.class);
    return war;
}
git clone git://github.com/javaee-samples/javaee7-samples.git
cd javaee7-samples/servlet/programmatic-registration/Now we are ready to start testing. You can run all the tests in this sample by executing:mvn testOr you can run individual tests by executing one of the following:mvn test -Dtest=ServletTest@Deployment(testable = false)
public static WebArchive createDeployment() {
    WebArchive war = ShrinkWrap.create(WebArchive.class).
            addClass(ParentServlet.class).
            addClass(ChildServlet.class);
    return war;
}
@Test
public void testChildServlet() throws IOException, SAXException {
    try {
        webClient.getPage(base + "/ChildServlet");
    } catch (FailingHttpStatusCodeException e) {
        assertNotNull(e);
        assertEquals(404, e.getStatusCode());
        return;
    }
    fail("/ChildSevlet could be accessed with programmatic registration");
    webClient.getPage(base + "/ParentServlet");
    webClient.getPage(base + "/ChildServlet");
}
There's a lot more about JavaEE to cover. If you're ready to learn more, check out the other available samples.
git clone git://github.com/javaee-samples/javaee7-samples.git
cd javaee7-samples/servlet/programmatic-registration/Do the changes as you see fit and send a pull request!
Good Luck!