Как запустить параллельный юнит-тест? - PullRequest
44 голосов
/ 04 августа 2009

Как использовать junit для запуска теста параллелизма?

Допустим, у меня есть класс

public class MessageBoard
{
    public synchronized void postMessage(String message)
    {
        ....
    }

    public void updateMessage(Long id, String message)
    {
        ....
    }
}

Я хочу одновременно протестировать множественный доступ к этому postMessage.Любой совет по этому поводу?Я хочу запустить этот вид теста параллелизма для всех моих функций сеттера (или любого метода, который включает в себя операцию создания / обновления / удаления).

Ответы [ 12 ]

0 голосов
/ 05 августа 2009

Лучший подход здесь - это использовать системные тесты, чтобы взорвать ваш код с запросами, чтобы увидеть, не выпадет ли он. Затем используйте модульный тест, чтобы проверить логическую корректность. Для этого я бы создал прокси для асинхронного вызова и сделал его синхронно тестируемым.

Однако, если вы хотите сделать это на уровне, отличном от полной установки и полной среды, вы можете сделать это в junit, создав свой объект в отдельном потоке, а затем создать множество потоков, которые запускают запросы к вашему объекту и блокируют основной поток, пока он не завершится. Этот подход может привести к тому, что тесты будут прерываться с перебоями, если вы не понимаете это правильно.

0 голосов
/ 04 августа 2009

TestNG поддерживает параллельное тестирование в Java. Эта статья описывает, как ее можно использовать, и есть документы на сайте testng.

Не уверен, что вы можете выполнить один и тот же тест в одно и то же время, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...