SlideShare a Scribd company logo
- Selenium - Browser-Based Automated Testing of Grails Apps Presented By Chris Bedford Founder & Lackey at Large Build Lackey Labs Company Overview  Founded  2008 Services Release engineering  &  Build/Test Automation for Java Environments Spring/Hibernate & Groovy/Grails App Development Training:  Spring/Groovy/Grails & Build/Test Automation Technologies Employees  Chris Bedford Mike Jackson
Agenda Different Ways To Test a Grails App Unit, Integration, Functional Selenium Demo of IDE Architecture Alternatives (Canoo WebTest) Automating Testing Using Selenium Maven Cargo  Viewing Test Results Lab 1 – maven project Alternative Automation Strategies grails-selenium-rc plugin Lab 2 – using selenium-rc plugin How to write functional tests with Selenium KEY TAKE-AWAYS How to set up Selenium Testing  On Grails Apps  In Continuous  Integration The fast way, using the grails-  selenium-rc plug-in The long way – using Maven Handy to know  if you are working  with non-Grails web apps
Unit Unit Tests are created and run developer and run using framework like Junit or TestNG test class or package functionality in isolation heavy use of mocks and stubs  tests should execute quickly and be run often to catch problems early on Integration Application is spun up within Grails running on top of servlet container Uses actual underlying framework instead of mocks Slower to run due to overhead of spinning up Grails Functional Testing Run application in container  Exercise functionality via a client side agent that executes Javascript. Agent could be either: your actual target browser (Firefox, IE, etc.)  [Selenium's approach] a Javascript engine embedded into test framework  [Canoo Webtest's approach] Different Ways To Test a Grails App Real http requests Separate client Mock http requests Client requests from same process Real Hibernate Mock Hibernate Functionality Package or class level scope Launch Grails container increasingly  coarse  grained  components  under  test
Manual Steps Involved In Running Selenium Before running Selenium Functional Tests we need to  Compile classes Run unit and integration tests  bail on functional tests if we catch problems with lighter weight tests Package .war file Install the container in which we want to run the .war  (optional) Deploy the .war to the container (optional – can just do ‘grails run-app’) Launch target browser Launch Selenium on desired test suite
Launching Selenium
Recording New Selenium Tests
Exporting test commands to 3GL (Java, etc.)
Individual tests referenced by the suite are recorded using their paths relative to the suite. For simplicity put your suite and all tests in the same directory (to start) Saving New or Modified Selenium Tests
Selenium Components Selenium IDE Selenese Commands Enable test author to  simulate navigation, clicks Make assertions about expected responses Selenium RC Client side library that enables you to program more sophistication into your tests than the IDE allows  (conditions, looping, error handling) The Selenium Server which launches and kills browsers, interprets and runs the Selenese commands passed from the test program, and acts as an  HTTP proxy ,
Selenium Client Side Library & Server In Action HTTP Selenium-server.jar Source: http://seleniumhq.org/docs/05_selenium_rc.html Reports back  results of test to client HTTP (javascript) (client side java script / Ajax portion of application under Test – originates from  here ) Application  under test (server side)
Selenium RC Server Acting As Proxy To Avoid Same Origin Policy Restrictions What happens when a test suite starts ? 1) client/driver establishes  connection w.selenium-RC  2)  Selenium-RC server launches a browser (or reuses an old one) with URL that injects Selenium-Core’s javascript into browser-loaded web page. 3) client-driver passes a Selenese command to the server e.g.: open command 4) Server interprets the command and then triggers the corresponding javascript execution to execute that command within the browser (say open page in app under test)s 5) Request to open the page is routed through proxy server 6) 7) Proxy forwards request to app  server App server returns response
Functional Test Alternatives: Canoo vs Selenium Canoo Web Test built on HtmlUnit pros: excellent test reporting allows you to pin point errors in test very easily. faster to run (no browser spin up overhead) better support for non HTML content (like spread sheets) cons: Weaker IDE (for test recording and playback) develop tests in Ant or Gant only Selenium pros: develop tests in HTML markup or 3 GL's like Java, Ruby, etc. run test in actual browser  vs.embedded Javascript engine used by NO popular browser platform cons: slower to start. see 'pros' listed Canoo
Canoo Web Test Reports Canoo's reports show overall test results and let you drill down into any test
Canoo Web Test Reports (cont.) Click to review a copy of the response HTML page corresponding to the first test step that failed
Gluing together the steps in your build process Before running Functional Tests need to  Compile Run unit and integration tests  bail on functional tests if we catch problems with lighter weight tests Package .war file Install the container in which we want to run the .war  (optional) Deploy the .war to the container (optional – can just do ‘grails run-app’) Launch your target browser Launch Selenium on your desired test suite To automate this process you can use ant maven Groovy/Gant scripts Gradle Our example uses Maven (demo) (tour of pom.xml files that wire together our build steps)
deploy Compile Unit Test  Integration Test Package .war file Download And Install Tomcat
Maven Basics Convention over configuration Standardizes where things live and what they are named  Lets you know where to look for the things you need…  and what to do when you find them Project Object Model  (pom.xml) specifies the complete ‘recipe for your build’ what artifact type are your producing ? (the name, the version…) what are the dependencies (things you need) to produce that artifact ? What plug-ins activate at what phases in the build life cycle ? Shared Repository for storing artifacts that result from a build Convention for naming artifacts Build Life Cycle each project is typically responsible for producing a distinct artifact (a.k.a. packaging) type  .jar, .war, .ear, etc.  each packaging type has an associated  life cycle (ordered set of build phases) Nested build project (module) structure overall driver for your build project lives at top level of a directory hierarchy sub-modules  underneath  the parent can be either  individual components of your product …or….  key phases in your build
Maven Nested Module Structure, Dependencies and Shared Repo mvn install Maven Repository Lives in $HOME/.m2/repostitory or  /Docuemts and Settings/<user>/.m2/repository declares the artifact it produces to be  org.example:demo:1.1 declares a a dependency on org.example:demo:1.1 org.example:demo:1.1
Maven pom.xml – Nested Module Structure
Maven pom.xml – Dependency Relationships Maven Repository org.example:demo:1.1
Hooking Maven Plug-ins Maven Into the Build Life Cycle  Build Life Cycle Phases validate  generate/process-sources process-sources  generate/process-resources  compile test prepare-package  package pre-integration-test integration-test  post-integration-test  verify  install  deploy pom.xml
Cargo  A set of APIs that assists in installing web containers (such as Tomcat, JBoss) booting and shutting them down deploying web applications (.wars and .ears) Invokable via ant tasks maven plugin Java API <target name=&quot;functional-test&quot; > <cargo containerId=&quot;tomcat6x&quot; action=&quot;start&quot;  …  > <zipurlinstaller installurl=&quot;http://somewhere/tomcat-6.0.zip&quot;/> <configuration type=&quot;standalone&quot; home=&quot;${tomcatdir}&quot;> <deployable type=&quot;war&quot; file=&quot;foo.war&quot;/> </configuration> </cargo> <plugin> ... <artifactId>cargo-maven2-plugin</artifactId> <config> <wait>false</wait> <container> <containerId>tomcat6x</containerId> <zipUrlInstaller> <url>http://somewhere/tomcat-6.0.zip</url> ... Installer installer =  new URL(&quot;http://somewhere/tomcat-6.0.zip&quot;)); installer.iZipURLInstaller(new nstall(); LocalConfiguration configuration =  new DefaultConfigurationFactory().createConfiguration(&quot;tomcat6x&quot;)...) container = new DefaultContainerFactory() .createContainer(&quot;tomcat6x&quot;....); container.setHome(installer.getHome()); WAR deployable = new WAR(&quot;foo.war);  deployable.setContext(&quot;ROOT&quot;); configuration.addDeployable(deployable);
Grails Selenium-rc Plugin Advantages: really easy to install and start using Disadvantages: Very new, not extremely well field tested AFAIK, no way to run HTML-based tests  In other words, tests authored in the Selenium IDE must be converted to Java first
Lab 2: Grails Selenium-rc Plugin Create the App  grails create-app books  cd books  grails create-domain-class com.Book  grails generate-all com.Book  Make sure it launches as expected  grails run-app   (see the familiar ‘Welcome to Grails’ message)  Install plugin and Create Test  Type  grails install-plugin selenium-rc  Open up grails-app/conf/Config.groovy and ensure that  the grails.serverURL property is defined for every enviornment (production, development, and test.) If this property is undefined I’ve  seen strange problems occur when test tests are run.  Open an editor on the file test/selenium/HomePageTests.groovy, then type : You can copy and paste the commands, and the  Groovy code for the test class.  Please go to this page for the text to copy -> http://buildchimp.com/wordpress/?p=241
Lab 2: Grails Selenium-rc Plugin Run the Tests to Verify Success, Then Deliberately Introduce a Failure  Type  grails test-app This will run all unit, functional and integration tests. You should see the browser pop up briefly and the tests should pass. To verify that you are testing what you think you are testing, you will now deliberately introduce  a test failure.  Open the file ./grails-app/views/index.gsp and replace all occurrences of ‘Welcome to Grails’ with ‘Welcome to Jail’. Run  grails clean grails test-app Note that the Tests FAILED message is now visible. In the last page of your output you should also see the message:  testHomePageLoads…FAILED To see a detailed stack trace at the point of failure, open your folder browser on the folder  test/reports/plain.  View the file  TEST-HomePageTests.txt and you should see a stack trace that describes the assertion that failed.
Thank You  !
Content Licensing Terms for This Work You may present, distribute, copy, or incorporate into your own work, any and all portions of this presentation as long as such copies, or derivative works are made available without charge. If you would like to redistribute this work on any type of fee-for-use or subscription basis, or if you wish incorporate any or all portions of this work into content which you charge for, please contact info <at> buildlackey.com to discuss licensing terms.

More Related Content

PPTX
PPTX
BDD using Cucumber JVM
PPSX
Maven Presentation - SureFire vs FailSafe
PPT
Demystifying Maven
PPTX
An introduction to Maven
PDF
Selenium - Introduction
PPTX
Selenium WebDriver training
DOCX
Selenium WebDriver FAQ's
BDD using Cucumber JVM
Maven Presentation - SureFire vs FailSafe
Demystifying Maven
An introduction to Maven
Selenium - Introduction
Selenium WebDriver training
Selenium WebDriver FAQ's

What's hot (20)

PDF
Selenium Handbook
PPT
Maven Overview
PDF
Testing with Codeception
PDF
Maven tutorial
PDF
Testing with Codeception (Webelement #30)
PPT
Testing Java Web Apps With Selenium
PDF
Efficient JavaScript Unit Testing, JavaOne China 2013
PPTX
CI / CD w/ Codeception
ODP
An Introduction to Maven Part 1
PDF
Efficient JavaScript Unit Testing, May 2012
PDF
Codeception introduction and use in Yii
PDF
Selenium webdriver interview questions and answers
PPTX
An Introduction to Maven
PPTX
Test automation with php codeception
PDF
Automation Testing using Selenium
PPTX
Introduction to Maven
PPTX
[AnDevCon 2016] Mutation Testing for Android
PDF
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
PDF
Introducing Playwright's New Test Runner
KEY
Enterprise Build And Test In The Cloud
Selenium Handbook
Maven Overview
Testing with Codeception
Maven tutorial
Testing with Codeception (Webelement #30)
Testing Java Web Apps With Selenium
Efficient JavaScript Unit Testing, JavaOne China 2013
CI / CD w/ Codeception
An Introduction to Maven Part 1
Efficient JavaScript Unit Testing, May 2012
Codeception introduction and use in Yii
Selenium webdriver interview questions and answers
An Introduction to Maven
Test automation with php codeception
Automation Testing using Selenium
Introduction to Maven
[AnDevCon 2016] Mutation Testing for Android
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
Introducing Playwright's New Test Runner
Enterprise Build And Test In The Cloud
Ad

Similar to Selenium-Browser-Based-Automated-Testing-for-Grails-Apps (20)

KEY
Enterprise Build And Test In The Cloud
PPT
Using Maven2
PPTX
Qa process
PDF
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
PPT
Maven Introduction
PPTX
Qa process
DOC
ODP
eXo Platform SEA - Play Framework Introduction
PPT
Integration and Acceptance Testing
PDF
GlassFish Embedded API
PPT
Selenium
PPT
Maven 2.0 - Project management and comprehension tool
PDF
Exploring Maven SVN GIT
PPT
Selenium-Webdriver With PHPUnit Automation test for Joomla CMS!
PPTX
Selenium Automation in Java Using HttpWatch Plug-in
PPT
Selenium
PPTX
Codeception
PPTX
Mastering Test Automation: How To Use Selenium Successfully
PPTX
jDriver Presentation
Enterprise Build And Test In The Cloud
Using Maven2
Qa process
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Maven Introduction
Qa process
eXo Platform SEA - Play Framework Introduction
Integration and Acceptance Testing
GlassFish Embedded API
Selenium
Maven 2.0 - Project management and comprehension tool
Exploring Maven SVN GIT
Selenium-Webdriver With PHPUnit Automation test for Joomla CMS!
Selenium Automation in Java Using HttpWatch Plug-in
Selenium
Codeception
Mastering Test Automation: How To Use Selenium Successfully
jDriver Presentation
Ad

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Big Data Technologies - Introduction.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Machine learning based COVID-19 study performance prediction
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
MYSQL Presentation for SQL database connectivity
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Unlocking AI with Model Context Protocol (MCP)
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Building Integrated photovoltaic BIPV_UPV.pdf
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Encapsulation_ Review paper, used for researhc scholars
Diabetes mellitus diagnosis method based random forest with bat algorithm
Review of recent advances in non-invasive hemoglobin estimation
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Big Data Technologies - Introduction.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Machine learning based COVID-19 study performance prediction
Network Security Unit 5.pdf for BCA BBA.
MYSQL Presentation for SQL database connectivity
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Unlocking AI with Model Context Protocol (MCP)

Selenium-Browser-Based-Automated-Testing-for-Grails-Apps

  • 1. - Selenium - Browser-Based Automated Testing of Grails Apps Presented By Chris Bedford Founder & Lackey at Large Build Lackey Labs Company Overview Founded 2008 Services Release engineering & Build/Test Automation for Java Environments Spring/Hibernate & Groovy/Grails App Development Training: Spring/Groovy/Grails & Build/Test Automation Technologies Employees Chris Bedford Mike Jackson
  • 2. Agenda Different Ways To Test a Grails App Unit, Integration, Functional Selenium Demo of IDE Architecture Alternatives (Canoo WebTest) Automating Testing Using Selenium Maven Cargo Viewing Test Results Lab 1 – maven project Alternative Automation Strategies grails-selenium-rc plugin Lab 2 – using selenium-rc plugin How to write functional tests with Selenium KEY TAKE-AWAYS How to set up Selenium Testing On Grails Apps In Continuous Integration The fast way, using the grails- selenium-rc plug-in The long way – using Maven Handy to know if you are working with non-Grails web apps
  • 3. Unit Unit Tests are created and run developer and run using framework like Junit or TestNG test class or package functionality in isolation heavy use of mocks and stubs tests should execute quickly and be run often to catch problems early on Integration Application is spun up within Grails running on top of servlet container Uses actual underlying framework instead of mocks Slower to run due to overhead of spinning up Grails Functional Testing Run application in container Exercise functionality via a client side agent that executes Javascript. Agent could be either: your actual target browser (Firefox, IE, etc.) [Selenium's approach] a Javascript engine embedded into test framework [Canoo Webtest's approach] Different Ways To Test a Grails App Real http requests Separate client Mock http requests Client requests from same process Real Hibernate Mock Hibernate Functionality Package or class level scope Launch Grails container increasingly coarse grained components under test
  • 4. Manual Steps Involved In Running Selenium Before running Selenium Functional Tests we need to Compile classes Run unit and integration tests bail on functional tests if we catch problems with lighter weight tests Package .war file Install the container in which we want to run the .war (optional) Deploy the .war to the container (optional – can just do ‘grails run-app’) Launch target browser Launch Selenium on desired test suite
  • 7. Exporting test commands to 3GL (Java, etc.)
  • 8. Individual tests referenced by the suite are recorded using their paths relative to the suite. For simplicity put your suite and all tests in the same directory (to start) Saving New or Modified Selenium Tests
  • 9. Selenium Components Selenium IDE Selenese Commands Enable test author to simulate navigation, clicks Make assertions about expected responses Selenium RC Client side library that enables you to program more sophistication into your tests than the IDE allows (conditions, looping, error handling) The Selenium Server which launches and kills browsers, interprets and runs the Selenese commands passed from the test program, and acts as an HTTP proxy ,
  • 10. Selenium Client Side Library & Server In Action HTTP Selenium-server.jar Source: http://seleniumhq.org/docs/05_selenium_rc.html Reports back results of test to client HTTP (javascript) (client side java script / Ajax portion of application under Test – originates from here ) Application under test (server side)
  • 11. Selenium RC Server Acting As Proxy To Avoid Same Origin Policy Restrictions What happens when a test suite starts ? 1) client/driver establishes connection w.selenium-RC 2) Selenium-RC server launches a browser (or reuses an old one) with URL that injects Selenium-Core’s javascript into browser-loaded web page. 3) client-driver passes a Selenese command to the server e.g.: open command 4) Server interprets the command and then triggers the corresponding javascript execution to execute that command within the browser (say open page in app under test)s 5) Request to open the page is routed through proxy server 6) 7) Proxy forwards request to app server App server returns response
  • 12. Functional Test Alternatives: Canoo vs Selenium Canoo Web Test built on HtmlUnit pros: excellent test reporting allows you to pin point errors in test very easily. faster to run (no browser spin up overhead) better support for non HTML content (like spread sheets) cons: Weaker IDE (for test recording and playback) develop tests in Ant or Gant only Selenium pros: develop tests in HTML markup or 3 GL's like Java, Ruby, etc. run test in actual browser vs.embedded Javascript engine used by NO popular browser platform cons: slower to start. see 'pros' listed Canoo
  • 13. Canoo Web Test Reports Canoo's reports show overall test results and let you drill down into any test
  • 14. Canoo Web Test Reports (cont.) Click to review a copy of the response HTML page corresponding to the first test step that failed
  • 15. Gluing together the steps in your build process Before running Functional Tests need to Compile Run unit and integration tests bail on functional tests if we catch problems with lighter weight tests Package .war file Install the container in which we want to run the .war (optional) Deploy the .war to the container (optional – can just do ‘grails run-app’) Launch your target browser Launch Selenium on your desired test suite To automate this process you can use ant maven Groovy/Gant scripts Gradle Our example uses Maven (demo) (tour of pom.xml files that wire together our build steps)
  • 16. deploy Compile Unit Test Integration Test Package .war file Download And Install Tomcat
  • 17. Maven Basics Convention over configuration Standardizes where things live and what they are named Lets you know where to look for the things you need… and what to do when you find them Project Object Model (pom.xml) specifies the complete ‘recipe for your build’ what artifact type are your producing ? (the name, the version…) what are the dependencies (things you need) to produce that artifact ? What plug-ins activate at what phases in the build life cycle ? Shared Repository for storing artifacts that result from a build Convention for naming artifacts Build Life Cycle each project is typically responsible for producing a distinct artifact (a.k.a. packaging) type .jar, .war, .ear, etc. each packaging type has an associated life cycle (ordered set of build phases) Nested build project (module) structure overall driver for your build project lives at top level of a directory hierarchy sub-modules underneath the parent can be either individual components of your product …or…. key phases in your build
  • 18. Maven Nested Module Structure, Dependencies and Shared Repo mvn install Maven Repository Lives in $HOME/.m2/repostitory or /Docuemts and Settings/<user>/.m2/repository declares the artifact it produces to be org.example:demo:1.1 declares a a dependency on org.example:demo:1.1 org.example:demo:1.1
  • 19. Maven pom.xml – Nested Module Structure
  • 20. Maven pom.xml – Dependency Relationships Maven Repository org.example:demo:1.1
  • 21. Hooking Maven Plug-ins Maven Into the Build Life Cycle Build Life Cycle Phases validate generate/process-sources process-sources generate/process-resources compile test prepare-package package pre-integration-test integration-test post-integration-test verify install deploy pom.xml
  • 22. Cargo A set of APIs that assists in installing web containers (such as Tomcat, JBoss) booting and shutting them down deploying web applications (.wars and .ears) Invokable via ant tasks maven plugin Java API <target name=&quot;functional-test&quot; > <cargo containerId=&quot;tomcat6x&quot; action=&quot;start&quot; … > <zipurlinstaller installurl=&quot;http://somewhere/tomcat-6.0.zip&quot;/> <configuration type=&quot;standalone&quot; home=&quot;${tomcatdir}&quot;> <deployable type=&quot;war&quot; file=&quot;foo.war&quot;/> </configuration> </cargo> <plugin> ... <artifactId>cargo-maven2-plugin</artifactId> <config> <wait>false</wait> <container> <containerId>tomcat6x</containerId> <zipUrlInstaller> <url>http://somewhere/tomcat-6.0.zip</url> ... Installer installer = new URL(&quot;http://somewhere/tomcat-6.0.zip&quot;)); installer.iZipURLInstaller(new nstall(); LocalConfiguration configuration = new DefaultConfigurationFactory().createConfiguration(&quot;tomcat6x&quot;)...) container = new DefaultContainerFactory() .createContainer(&quot;tomcat6x&quot;....); container.setHome(installer.getHome()); WAR deployable = new WAR(&quot;foo.war); deployable.setContext(&quot;ROOT&quot;); configuration.addDeployable(deployable);
  • 23. Grails Selenium-rc Plugin Advantages: really easy to install and start using Disadvantages: Very new, not extremely well field tested AFAIK, no way to run HTML-based tests In other words, tests authored in the Selenium IDE must be converted to Java first
  • 24. Lab 2: Grails Selenium-rc Plugin Create the App grails create-app books cd books grails create-domain-class com.Book grails generate-all com.Book Make sure it launches as expected grails run-app   (see the familiar ‘Welcome to Grails’ message) Install plugin and Create Test Type grails install-plugin selenium-rc Open up grails-app/conf/Config.groovy and ensure that  the grails.serverURL property is defined for every enviornment (production, development, and test.) If this property is undefined I’ve  seen strange problems occur when test tests are run. Open an editor on the file test/selenium/HomePageTests.groovy, then type : You can copy and paste the commands, and the Groovy code for the test class. Please go to this page for the text to copy -> http://buildchimp.com/wordpress/?p=241
  • 25. Lab 2: Grails Selenium-rc Plugin Run the Tests to Verify Success, Then Deliberately Introduce a Failure Type grails test-app This will run all unit, functional and integration tests. You should see the browser pop up briefly and the tests should pass. To verify that you are testing what you think you are testing, you will now deliberately introduce  a test failure. Open the file ./grails-app/views/index.gsp and replace all occurrences of ‘Welcome to Grails’ with ‘Welcome to Jail’. Run grails clean grails test-app Note that the Tests FAILED message is now visible. In the last page of your output you should also see the message: testHomePageLoads…FAILED To see a detailed stack trace at the point of failure, open your folder browser on the folder test/reports/plain. View the file  TEST-HomePageTests.txt and you should see a stack trace that describes the assertion that failed.
  • 27. Content Licensing Terms for This Work You may present, distribute, copy, or incorporate into your own work, any and all portions of this presentation as long as such copies, or derivative works are made available without charge. If you would like to redistribute this work on any type of fee-for-use or subscription basis, or if you wish incorporate any or all portions of this work into content which you charge for, please contact info <at> buildlackey.com to discuss licensing terms.

Editor's Notes

  • #14: Canoo’s test results reports really excel at providing you drill down capability into the exact step of a test that failed. With Canoo’s reports you see a clickable entries for each test run toward the bottom of the page together with a summary of tests run. (pass fail percentages of both tests and individual steps within tests). If you click on an entry for an individual test, you see a page…. (next slide)…
  • #15: That gives you the pass/fail status of each individual step within the test. You can go right to the failing test and view the resulting response page from the server.. Then you can figure out why the returned content did not match your assertions about what that content should have been.
  • #22: Canoo’s test results reports really excel at providing you drill down capability into the exact step of a test that failed. With Canoo’s reports you see a clickable entries for each test run toward the bottom of the page together with a summary of tests run. (pass fail percentages of both tests and individual steps within tests). If you click on an entry for an individual test, you see a page…. (next slide)…