??(functional) ???
Grails?
?? ??? ??? ??, ? ?????? ?? ???? ?????.
?? ???? ???? ?? Grails? ?? ?? ?? ??????
Canoo WebTest ? ?????.
? ??????? ??? ???????
?? ? ??? ??
??????? ?? ?????? ?? ??? ?????:
? ??? ??? ?? ??? ???? ?????:
- Canoo WebTest? ?? ?? ?? ???? ??? {{grails.home/downloads/webtest}} ????? ?????. ?? ????? ? ? ?? ?? ????.
- ?? ??????? ?? ??? ???? ??? ?????.
- ?? ??? ?? ??? ??(suite)? ?????.
?? ??? ???? ?? ? ??? ????? ???? ?? ??? ??? ?:
??? ???? ??? ?????. ? ??? ?? ??? ?????:
- ?? ??? ???? ?? ?? ????? ?? ?? ????? ?????.
- ????, ????, ??? ? ?? ?????? ?? ? GUI? ?? ????? ??? ?????.
??? ????
??????? ?? ?????? ?? ??? ????:
???? ??? ? ?? ???? {{reports}} ????? ?????.
?????? ????? ? ????? ???? ???? HTML ???? ??? ????.
????? ??? ?? ?? ??? ?? ??? ???? ????:

???? ?????? ??? ?? ??? ?? ?????? ?? ??? ??? ?????:

WebTest? ? ???? ?? ?? ?? ???? ???? ??? ?? ?????. ??? ????? ?? ??? ??? ?? ???? ??? ??? ?? ???? ?? ???? ? ? ????.
{tip:title=??? ??}
WebTests? ??? ???? ?? ?? ????? ??? ? ????. ???? ?? ??? ?? ?? ???? ???? ??? ?? ????.
? ?? ??? ???? ?? ?? ??? ?? ??? ?? ????, ?????? ??? ?????. ???? ??? ???? ??, ??????? ??? ????? ???? ???? ? ? ??, ??? ??? ??? ??????? ? ? ?? ?????.{tip}
??? ????
webtest ???? ????
{{mydomain}} ??? ???? ?? ???? ?????? ?????? ???? ?? ??? ?? ?????? ??? ????:
myapp
+-- webtest
+-- conf (webtest.properties)
+-- reports (readme.txt)
+-- tests (TestSuite.groovy, MydomainTest.groovy)????????? ???? ??? ????:
|| ???? || ?? || ?? ? ?? ? ||
| conf | webtest.properties | ???/??/??????? ?? |
| tests | TestSuite.groovy | ??? ?? ?? ??? ?? ?? ?? ??? ??? ???? ?? |
| tests | MydomainTest.groovy | ??? ??? ??. ??? ?????. |
??? ?? ????
MydomainTest.groovy ? ??? ??? ?? ?????:
class MydomainTest extends grails.util.WebTest { // ?? ????? ?? ?? ???? ?? ?? ??? ??????
// ? ??? ??? ?????.
void suite() {
testMydomainListNewDelete()
// ???? ??? ??
} def testMydomainListNewDelete() {
webtest('Mydomain basic operations: view list, create new entry, back to view, delete, view'){
invoke(url:'mydomain')
verifyText(text:'Home') verifyListPage(0) // <- ??? ???? ???? ?? ?? ??? ?? clickLink(label:'New Mydomain')
verifyText(text:'Create Mydomain')
clickButton(label:'Create') // ?? …
}{{invoke}}, {{clickButton}}, {{verifyXXX}} ?? ??? ??? ???? ?? ??? ????.
? ?? ? ??? ?? ?? ??, ??? ?? ? ???
WebTest ?? ? ?????.
??? ??? ? ???? ANT ???(XML)? ?? ???? ????. ? ??? MyappTest.groovy? {{webtest()}} ??? ???? ?? ??? ??? ?????. ??? ????? AntBuilder? ?? ? Canoo WebTest? ?? Groovy-API ?? ?? ??????.
MydomainTest.groovy? ? ??? ???? ? ??????? ???? ??? ??? ?????. ??(bootstrapped) ???? ??? ? ???? ???? ???? ???? ???.
? ?? ???
{{tests}} ????? ? ?? ????? MydomainTest.groovy? ?? ?? ????? ?? ? ????.
? ???? ??? {{grails.util.WebTest}} ? ????? ?? {{suite}} ???? ???? ???. {{suite}} ???? ? ??? ???? ???? ???. ?? ????? ?? ????? ??? ??? package ?? ???? ??? ???.
????? TestSuite.groovy? ?? ???? ??? ????. ?? ??? ???????? ????? ??? ??(suite)? ?? ?? ????. (? ??? ??? ?????)
??? ?? ??? ?? ???? ????? ??, ?? ?? ??? ? ?? ????? ???? ???? ???? ?? ??? ??? ??? ????????? ???.
null
null
null
null
null
null
???
nullnullnullnullnull_Dierk Koenig_