I have created a test class that extends (Java) JUnitRouteTest
In the test class I have two unit tests that rely on a TestRoute. The TestRoute is created like this in the body of my test class:
TestRoute appRoute = testRoute(new MyHTTPWithActors(system).createRoute());
Where MyHTTPWithActors
has a constructor that needs an ActorSystem passed to it.
My test class builds that ActorSystem with a @BeforeClass
annotation (once per test class run, right?) with:
system = ActorSystem.create("test-system", ConfigFactory.load("application-test"));
In trying my tests I noted a few things that I want to solve:
-
That application-test config does not have remoting specified. It also seems to be ignored. My tests keep firing up an actor system that binds ports, ie. uses remoting. I can put any
resourceBasename
parameter I want there, it won’t actually use that value inConfigFactory.load()
. If I leave out that ConfigFactory param and use the name only version ofActorSystem.create()
my tests fail with a “Address already in use” error. -
If I instantiate the ActorSystem as above, I can see that it is being created once for each test. I can’t see how to avoid this behavior?.
How can I make ActorSystem not be created and torn down for each test? How can I make the test ActorSystem load my config and not use remoting? Why is it working with the ConfigFactory param version?