In order to write integration tests for your application, you need ability to spin up a geode cluster from your test and then run tests for your application that work against the cluster. Geode now ships with a JUnit Rule to help.
You can use this GfshRule like so:
public class LibraryTest { @Rule public GfshRule gfshRule = new GfshRule(); @Test public void testSomeLibraryMethod() { Library classUnderTest = new Library(); GfshScript.of("start locator --name=loc", "start server --name=serv1", "create region --name=test --type=REPLICATE").execute(gfshRule); classUnderTest.doPut(); assertEquals("one", classUnderTest.doGet()); } }
While running this test, a locator and a server JVM will be spun-up by GfshRule.
Step-by-step guide
You need to follow the following steps to get this to work:
Specify geode-junit as a compile dependency for your tests by adding the following in your build.gradle
testCompile 'org.apache.geode:geode-junit:geodeVersion'
- Specify the gradle plugin that will download and install the Geode distribution to be used by GfshRule by adding the following at the top of your build.gradle file
plugins { id "io.pivotal.GeodeIntegrationTestPlugin" version "1.0" }
This will download the latest version of Apache Geode. If you want to specify a version use the following in your build.gradle
geodeIntegration { version = "1.2.0" }
- Write your integration tests by spinning up a Geode cluster using gfsh commands as shown above.
A very simple application can be found at: https://github.com/sbawaska/geode-integration-test-example