What is GoaTE?

GoaTE is the Greates of All Test Engines. It is a layer above frameworks that seeks to make using different frameworks easier and interchangable, while providing some extra frameworks for things that I find lacking in other testing frameworks.

This page will hopefully provide answers to your questions. And even a few answers to questions you never asked. Perhaps some friendly (and some not so friendly) tutorials. Plus a dictionary and encylcopedia of words in the DSL and tagged utiltilies provided by GoaTE.

The best place to get started is with the tutorials. Hopefully they provide a decent enough walkthrough and examples to get you're GoaTE working.

Why is GoaTE?

GoaTE is framework designed to help facilate better tests by providing an interface(s) that you write tests against that wrap other commonly used testing libraries. Additionally it provides a simple DSL layer in the form of the GoaTE data collection that provides a mechanism for defining more dynamic data. The DSL is designed to easably extended and is intended to be used for making statically typed data driven tests a bit more dynamic. GoaTE also provides a few other frameworks of its own. This includes "expectations" that are designed to work the "employees" and static data. Expectatoins are asyncrhonously executed and can be defined to retry for a given period until successful. Employees define a standard interface for defining objects that execute a task and return a result.

Testing is also a bit different from production development and often has slightly different use cases for logging and serializing/deserializing data. GoaTE provides its own logging interface geared more towards the types of logging used in testing. It is designed to work natively with SLFJ and can be extended to add additional logging support, such as support for ExtentReports. Testing activities usually have to deal with multiple different sources of data. The serialization/deserialization support provided in GoaTE allows for a single Object to be mapped to multiple sources that have different key names.

How is GoaTE?

GoaTE is written as one big project made up of different modules. The main module is called "kernel". You can use as many our as few of the modules as you want.

com.thegoate:

barn

GoaTE's completely datadriven test framework. Test cases are defined in a json format and leverages the GoaTE DSL. Similar to other DSL based test frameworks (like Cucumber).

gradle

A Gradle plugin for facilitating the module builds of the GoaTE project. It also provides some boiler plate for setting up the TestNG plugin for running tests using the Gradle command line.

json

Provides support for working with json using the org.json library. Allows you to get fields from json, build json from a string, serialize and deserialize to and from json.

kernel

This is the main module in GoaTE. It defines the GoaTE data object (which provides the DSL layer and is backed by a concurrent map). It defines the interfaces for expectations, employees, the various utilities, and a mechanism for defining data loaders.

mock

Defines DSL words and employees for building mocks from static text values. Implemented using mockito (and json).

performance

Not fully implemented. Provides the infrastructure for using existing tests as the basis for performance testing.

rest

Defines GoaTE specific interface for making rest calls. This is just an interface and requires an rest implemantation, like the restassured module, to work.

restassured

The Rest Assured implementation of the rest interface. Use Rest Assured to make the actual rest calls. It is recommended that the tests be written using the rest interface and not the actual implementation.

selenium

Implements some basic boiler plate support for working with selenium. Will eventually define a more generic interface for interacting with the UI similar to the rest interface. You must still provide the drivers yourself.

spreadsheets

DSL, utilities, and employees for interacting with spreadsheets. Supports csv and excel files.

spring

Provides support for writing spring based tests using TestNG.

testng

GoaTE for TestNG. Provides different base classes that your test classes may extend to provide some standard dataprovider support that leverage the data loader framework from kernel. It also makes use of the expectations for defining what to validate for the tests. All bundled up and executed using TestNG.

xml

Similar to the json module, except for working with xml. Implemented using standard java libraries for xml and the org.jsoup library.

Who is GoaTE

The cliche answer is: You are. I are. We are.

The actual answer is: Eric is. GoaTE has evolved over the years (since about 2011) before becoming the GoaTE you see now.