From a practical point of view, to call a servlet you really need to emulate the key parts of a container. In this case, particularly the lifecycle and context services.
Although the "make it do stuff" methods are service, doget, doPost etc., all servlet containers will call init first, and many servlets rely on this for initialization rather than the constructor. If you think the servlet you are calling would normally register as a listener for other lifecycle events, then you may need to emulate those, too.
And don't forget to include the appropriate servlet api jar file in your classpath.
In practice, if yuo have access to the source code it's generally a much better solution to extract the "business processing" to another class which does not depend on any of the servlet API, then call that one directly from both you servlet and your non-servlet code.