Как проверить параллельную Java-программу, которая ожидает строковые аргументы cmd? - PullRequest
4 голосов
/ 22 ноября 2010

У меня есть программа на Java, основной метод которой (в основном классе) ожидает аргументы командной строки. Программа также является параллельной (использует потоки и прочее).

Я хочу провести масштабный рефакторинг программы. Прежде чем начать рефакторинг, я хотел бы создать тестовый костюм для основного метода. Я хотел бы проверить основной метод с различными строковыми аргументами cmd. Я хочу запускать эти тесты автоматически после каждого шага рефакторинга, который я делаю. Как создать тест, который передает аргументы строки cmd?

Я не могу использовать JUnit, потому что, насколько я знаю, он не работает с параллельными программами. Я также не уверен, что вы можете передавать строковые аргументы cmd с помощью JUnit.

Я использую затмение.

Ответы [ 4 ]

2 голосов
/ 22 ноября 2010

Посмотрите на многопоточность.http://code.google.com/p/multithreadedtc/

0 голосов
/ 26 ноября 2010

Awaitility также может быть полезен для написания детерминированных модульных тестов. Это позволяет вам ждать, пока какое-то состояние в вашей системе не будет обновлено. Например:

await().untilCall( to(myService).myMethod(), greaterThan(3) );

или

await().atMost(5,SECONDS).until(fieldIn(myObject).ofType(int.class), equalTo(1));

Также имеется поддержка Scala и Groovy.

await until { something() > 4 } // Scala example
0 голосов
/ 22 ноября 2010

Я не знаком с различными инструментами автоматизации, доступными специально для многопоточности, поэтому я не буду их комментировать.Но простой, но эффективный вариант - записывать ключевые события из запущенной программы в файл CSV.Вы можете записать окончательный результат (если это программа типа расчета) или выйти из системы в каждом случае в программе, где какое-либо состояние ключа изменяется или происходит событие.Поскольку это многопоточное приложение, вам следует обратить внимание на сравнение последовательности зарегистрированных данных, если вы не можете гарантировать относительный порядок ключевых событий, которые вы ожидаете увидеть, тогда сравните вывод, используя результаты типа ключ-значение.В любом случае, идея заключается в создании файлов тестовых данных, которые вы можете использовать для автоматического сравнения при обратном тестировании.

0 голосов
/ 22 ноября 2010

Рассмотрите возможность использования JMeter. С JUnit sampleler вы можете легко выполнять параллельные тесты JUnit и видеть результат. См. этот вопрос для более подробной информации.

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