Я хочу написать набор тестов системной интеграции для клиентского приложения RMI. Я хотел бы запустить сервер RMI в JUnit 3.8.2, а затем запустить эти тесты. Кто-нибудь это делал?
Я использую что-то подобное в pojo с main:
import java.rmi.registry.*;
....
//setup
try {
java.rmi.registry.LocateRegistry.createRegistry(1099);
System.out.println("RMI registry ready.");
this.StartMyServer();
// client set up
MyClient m = null;
m = (MyClient) Naming.lookup("//MyHost/MyServer", m);
// tests here
} catch (MyClientException me) {
System.out.println("MyClient fall down go boom");
} catch (MyServerException me) {
System.out.println("MyServer fall down go boom");
} catch (Exception e) {
System.out.println("Exception starting RMI registry:");
}
Как лучше всего превратить это в тест junit, чтобы реестр запускался только один раз, а тесты запускались только в том случае, если реестр действительно запускается? Я мог бы избежать наличия тестового класса с одним тестовым методом со всем тестовым кодом из основного, что я и делал до того, как приехал сюда.
Кроме того, на что следует обращать внимание при написании тестов? Есть ли ошибки при тестировании RMI?




Если вы используете JDK 5 или выше, я бы рекомендовал перейти на JUnit 4.4. Аннотации очень помогают.
Также рекомендую прочитать это. Я не понимаю, зачем вам писать отдельный основной класс для запуска тестов. Разве это не то, что должен делать TestRunner?
Я бы запустил реестр в настройке и отключил его методом разрыва.
Основное я не писал, это делал предыдущий разработчик. Это ручной "дымовой тест", который я портирую на junit