Каковы наилучшие методы тестирования Gradle Скрипты?
В настоящее время unit test my ant скрипты с antunit, но я для перехода на Gradle. Я могу только найти статьи по тестированию кода Java из Gradle или Groovy, но ничего не тестировать задачи Gradle, которые я создаю или тестирую Groovy в целом. Существует ли эквивалент аннулирования для Gradle? Кто-нибудь играл с базой BDD (например, огурец) для тестирования сценариев Gradle?
Например, в настоящее время у меня есть следующий Ant Target
<target name="dist-bin" depends="build" description="creates a zip distribution of the current build">
<zip destfile="build/TIBant-bin.zip">
<zipfileset dir="src/ant" includes="**" />
<zipfileset dir="test" includes="**" prefix="test" />
<zipfileset dir="build" includes="TIBant.jar" />
<zipfileset dir="build" includes="TIBant-*.html" />
<zipfileset dir="build/examples/XMLtoProperties"
includes="XMLtoProperties.html"
prefix="examples/XMLtoProperties" />
<zipfileset dir="lib" includes="**" prefix="lib" />
<zipfileset dir="src/xslt" includes="**" excludes="test/**,userguide.xslt" prefix="lib/xslt" />
<zipfileset dir="." includes="copyright.html,LICENSE.txt" />
<zipfileset dir="examples"
includes="**"
excludes="**/build/**,**/config/default.properties"
prefix="examples" />
</zip>
</target>
Как вы можете себе представить, довольно легко сломать это при рефакторинге проекта, поэтому у меня есть следующий тест на антенит, чтобы проверить его.
<target name="test-dist-bin">
<delete file="build/TIBant-bin.zip" />
<au:assertFalse message="Bin dist still present">
<available file="build/TIBant-bin.zip" />
</au:assertFalse>
<antcall target="dist-bin" />
<au:assertTrue message="Bin dist not created">
<available file="build/TIBant-bin.zip" />
</au:assertTrue>
<delete dir="build/testBinDist" />
<au:assertFalse message="TestBinDist still present">
<available file="build/testBinDist" />
</au:assertFalse>
<mkdir dir="build/testBinDist" />
<unzip src="build/TIBant-bin.zip" dest="build/testBinDist" />
<au:assertFalse message="config dir present">
<available file="build/testBinDist/config/default.properties" />
</au:assertFalse>
<au:assertTrue message="Ant Macros missing">
<available file="build/testBinDist/tibant.xml" />
</au:assertTrue>
<au:assertTrue message="Engine Stopper Jar missing">
<available file="build/testBinDist/TIBant.jar" />
</au:assertTrue>
<au:assertTrue message="Ant-contrib-missing">
<available file="build/testBinDist/lib/ant-contrib-1.0b3.jar" />
</au:assertTrue>
<au:assertTrue message="ant-unit missing">
<available file="build/testBinDist/lib/ant-antunit-1.2.jar" />
</au:assertTrue>
<au:assertTrue message="Copyright missing">
<available file="build/testBinDist/copyright.html" />
</au:assertTrue>
<au:assertTrue message="License missing">
<available file="build/testBinDist/LICENSE.txt" />
</au:assertTrue>
<au:assertFalse message="Src present">
<available file="build/testBinDist/src/java/org/windyroad/tibant/EngineStopper.jar" />
</au:assertFalse>
<au:assertTrue message="example missing">
<available file="build/testBinDist/examples/SimpleProject/src/bw/example/Build/example.archive" />
</au:assertTrue>
<au:assertFalse message="example has build files">
<available file="build/testBinDist/examples/SimpleProject/build/*" />
</au:assertFalse>
<au:assertFalse message="example has default config file">
<available file="build/testBinDist/examples/SimpleProject/config/default.properties" />
</au:assertFalse>
<property name="doc.file"
location="build/testBinDist/TIBant-User-Guide.html" />
<au:assertTrue message="doc missing: ${doc.file}">
<available file="${doc.file}" />
</au:assertTrue>
<au:assertTrue message="xslt missing">
<available file="build/testBinDist/lib/xslt/configure-ear.xslt" />
</au:assertTrue>
<subant target="run-quick-tests">
<fileset dir="build/testBinDist" includes="build.xml" />
</subant>
</target>
который вызывается следующим фрагментом, чтобы создать хороший отчет xml
<au:antunit failonerror="@{failonerror}">
<propertyset>
<propertyref name="config.filename" />
</propertyset>
<path>
<pathelement location="@{antunit}" />
</path>
<au:plainlistener logLevel="info" />
<au:xmllistener todir="build" loglevel="info" />
</au:antunit>
Я понимаю, как переносить dist-bin
в gradle, но я не уверен, как правильно переносить вызов test-dist-bin
и au:antunit
.