Во-первых, я выведу этот вопрос: Почему Вашим членам парламента, не занимающим официального поста нужно изолированное тестирование? Они то, что комплекс, обеспечивая такие сложные поведения для требования тестирования кроме общедоступной поверхности? Это - поблочное тестирование, не тестирование 'строки кода'. Не потейте маленький материал.
, Если они являются настолько большими, достаточно большими, что эти члены парламента, не занимающие официального поста - каждый, 'единица', большая в сложности - рассматривает рефакторинг таких членов парламента, не занимающих официального поста из этого класса.
, Если рефакторинг является несоответствующим или неосуществимым, можно ли использовать стратегическую модель для замены доступа к этим функциям члена парламента, не занимающего официального поста / членские классы когда под модульным тестом? Под модульным тестом стратегия обеспечила бы добавленную проверку, но в сборках конечных версий это будет простая передача.
Вы также можете просто использовать Groovy CliBuilder (который внутренне использует Apache Commons Cli).
Хороший пример того, как это работает, вы найдете здесь => http: // www .reverttoconsole.com / blog / codenippets / groovy-clibuilder-in-practice /
def cli = new CliBuilder()
cli.with {
usage: 'Self'
h longOpt:'help', 'usage information'
i longOpt:'input', 'input file', args:1
o longOpt:'output', 'output file',args:1
a longOpt:'action', 'action to invoke',args:1
d longOpt:'directory','process all files of directory', args:1
}
def opt = cli.parse(args)
def action
if( args.length == 0) {
cli.usage()
return
}
if( opt.h ) {
cli.usage()
return
}
if( opt.i ) {
input = opt.i
}
...
Одно из основных достоинств Groovy - это совместимость с Java. Поэтому при поиске библиотек для использования в Groovy я первым делом ищу существующие библиотеки Java.
Args4j - краткая и элегантная библиотека для анализа параметров командной строки и , она отлично работает с классами Groovy. Я переписал части учебника для работы с Groovy.
Рассмотрим следующий класс Groovy:
import org.kohsuke.args4j.Option;
class Business {
@Option(name="-name",usage="Sets a name")
String name
public void run() {
println("Business-Logic")
println("-name: " + name)
}
}
Скомпилируйте его с помощью:
groovyc -classpath .:args4j-2.0.12/args4j-2.0.12.jar Business.groovy
и запустите с помощью
java -cp .:args4j-2.0.12/args4j-2.0.12.jar:/usr/share/java/groovy/embeddable/groovy-all-1.6.4.jar -Dmainclass=Business org.kohsuke.args4j.Starter -name sample
Чтобы получить результат
Business-Logic
-name: sample
Apache Commons CLI - еще одна библиотека Java, которую можно использовать в Groovy