The 12 Tips of (CommandBox) Christmas 2017- Day 5 - TestBox Run

https://www.ortussolutions.com/blog/the-12-tips-of-commandbox-christmas-2017-day-5-testbox-run

For Christmas this year, why don’t you give the gift of unit tests to everyone (including yourself) who may work on your app in the future. Nothing else brings about the same amount of confidence in refactoring or assurance that your app still works on that new CF engine update you just installed. While you use TestBox to write and run your tests, CommandBox has some commands built in to help you do it in style. And most importantly, these CLI commands are perfect for automating your tests on your favorite CI server like Jenkins or Travis.

testbox run

There is a testbox run command available that will run your unit or integration tests from the command line. All you need is to have your server running (it doesn’t have to be a CommandBox server).

Run your test suite like so (modify the runner URL to match your site).

testbox run "http://localhost:8080/tests/runner.cfm"

This will hit your runner URL and output a CLI-formatted report of your test results. If your test suite failed, the command will also return a failing exit code when being run from your native shell. This makes integrations with CI tools like Jenkins or Travis-CI very easy since a failing test will fail your build automatically.

Default runner URL

You can also set up the default runner URL in your box.json and it will be used for you. Setting the URL is a one-time operation.

package set testbox.runner="http://localhost:8080/tests/runner.cfm"
testbox run

Note that in CommandBox 4.0, you will be able to have relative runner URLs like /tests/runner.cfm which means you don’t have to worry about the host or port.

Example Output

Here is an example of the non-verbose output. Non-verbose only shows failing tests which can be handy when you have hundreds of tests and only care about the failing ones.

testbox run --noVerbose

Executing tests via http://127.0.0.1:55197/tests/runner.cfm?&recurse=true&reporter=json, please wait...
TestBox v2.5.0+107