Betamax is a tool for mocking external HTTP resources in your tests. The project was inspired by the VCR library for Ruby.
Documentation hosted at http://betamax.software/ is currently only for the 1.X branch and is deprecated. New documentation is being produced, but it will take some time. Please see examples in Betamax's tests and follow this readme.
Since 2.0.1, requires JDK7 or later.
Betamax is hosted via Sonatype and is intended to be compatible with any Maven-based build tool.
<dependency> <groupId>software.betamax</groupId> <artifactId>betamax-junit</artifactId> <version>2.0.1</version> <scope>test</scope> </dependency>
<dependency> <groupId>software.betamax</groupId> <artifactId>betamax-specs2_2.11</artifactId> <version>2.0.1</version> <scope>test</scope> </dependency>
libraryDependencies += "software.betamax" %% "betamax-specs2" % "2.0.1" % "test"
Snapshots are made after every successful build in master, so if you want the bleeding edge, you know where to get it.
JDK 7 dramatically increased the security of the JVM, making it much more difficult to exploit man-in-the-middle attacks. Because Betamax is a legitimate use of MITM, it is necessary to configure the environment to allow Betamax to do so. This will be accomplished by installing a Betamax certificate-authority into Java's
cacerts which will allow Betamax to generate a mock-SSL certificate for any site.
For all environments where tests are being run, a one-time installation of the Betamax certificate into Java's
cacerts is necessary.
keytool -importcert -keystore $JAVA_HOME/jre/lib/security/cacerts -file betamax.pem -alias betamax -storepass changeit -noprompt
sudowill likely be required for unix-based operating systems
betamax.pemis included in the
betamax-core.jar, but it's probably best to pull it from GitHub.
betamax.pemshouldn't have a need to change for the foreseeable future, so this installation should last for the life of the tests.
Files to Ignore:
Betamax generates files with the following extensions that should not be committed to source control:
Continuous Integration Considerations:
For Travis CI users, please see Betamax's
.travis.yml. As of writing,
sudo:required is necessary in order to install the CA. Hopefully this won't be the case in the future.
For all other CI environments, be sure to use the
keytool command listed above to ensure the Betamax CA is installed.
Additional Contributions (sorted alphabetically by last name)
- Marcin Erdmann
- Ian Grayson
- Russel Hart
- Lari Hotari
- Michal Kováč
- David Kowis
- Jason LeCount
- Peter Ledbrook
- George McIntosh
- James Newbery
- Ryan Schmitt
- Michael Vorburger
Note: There were 3 others who didn't appropriately identify themselves via Git, and thus are not on this list.