Лучшие практики для приложений JUnit и RMI, реестра RMI - PullRequest
5 голосов
/ 09 января 2009

Я хочу написать набор тестов системной интеграции для клиентского приложения 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, чтобы реестр запускался только один раз и тесты запускались только в том случае, если реестр действительно запускается? Мне не хотелось бы иметь тестовый класс с одним тестовым методом со всем тестовым кодом из main, что я и делал, прежде чем приехать сюда.

Кроме того, на что следует обращать внимание при написании моих тестов? Есть ли какие-либо ошибки тестирования RMI?

1 Ответ

5 голосов
/ 09 января 2009

Если вы используете JDK 5 или выше, я бы рекомендовал перейти на JUnit 4.4. Аннотации очень помогают.

Я бы также порекомендовал прочитать это . Я не понимаю, почему вы бы написали отдельный основной класс для запуска тестов. Разве это не то, что должен делать TestRunner?

Я бы запустил реестр в настройке и закрыл его методом разрыва.

...