description | icon |
---|---|
TestBox is a next-generation testing framework based on BDD (Behavior Driven Development) and TDD (Test Driven Development), providing a clean, obvious syntax for writing tests. |
house-chimney-user |
TestBox is a next-generation testing framework for the BoxLang JVM language and ColdFusion (CFML) based on BDD (Behavior Driven Development) for providing a clean, obvious syntax for writing tests. It contains not only a testing framework, console/web runner, assertions, and expectations library but also ships with MockBox, A mocking and stubbing companion.
{% tabs %} {% tab title="BDD - BoxLang" %}
class{
function run(){
describe( "My calculator features", () => {
beforeEach( () => {
variables.calc = new Calculator()
} )
// Using expectations library
it( "can add", () => {
expect( calc.add(1,1) ).toBe( 2 )
} )
// Using assert library
test( "it can multiply", () => {
assertIsEqual( calc.multiply(2,2), 4 )
} )
} )
}
}
{% endtab %}
{% tab title="xUnit - BoxLang" %}
/**
* My calculator features
*/
class{
property calc;
function setup(){
calc = new Calculator()
}
// Function name includes the word 'test'
// Using expectations library
function testAdd(){
expect( calc.add(1,1) ).toBe( 2 )
}
// Any name, but with a test annotation
// Using assertions library
@test
function itCanMultiply(){
$assert.isEqual( calc.multiply(2,2), 4 )
}
}
{% endtab %}
{% tab title="BDD - CFML" %}
component{
function run(){
describe( "My calculator features", () => {
beforeEach( () => {
variables.calc = new Calculator()
} );
// Using expectations library
it( "can add", () => {
expect( calc.add(1,1) ).toBe( 2 )
} );
// Using assert library
test( "it can multiply", () => {
$assert.isEqual( calc.multiply(2,2), 4 )
} );
} );
}
}
{% endtab %}
{% tab title="xUnit - CFML" %}
/**
* My calculator features
*/
component{
property calc;
function setup(){
calc = new Calculator()
}
// Function name includes the word 'test'
// Using expectations library
function testAdd(){
expect( calc.add(1,1) ).toBe( 2 )
}
// Any name, but with a test annotation
// Using assertions library
function itCanMultiply() test{
$assert.isEqual( calc.multiply(2,2), 4 )
}
}
{% endtab %} {% endtabs %}
Runner
Here is a simple listing of features TestBox brings to the table:
- BDD style or xUnit style testing
- Testing life-cycle methods
- MockBox integration for mocking and stubbing
- Mocking data library for mocking JSON/complex data and relationships
- Ability to extend and create custom test runners and reporters
- Extensible reporters, bundled with tons of them:
- JSON
- XML
- JUnit XML
- Text
- Console
- TAP (Test Anything Protocol)
- Simple HTML
- Min - Minimalistic Heaven
- Raw
- CommandBox
- Asynchronous testing
- Multi-suite capabilities
- Test skipping
- Test labels and tagging
- Testing debug output stream
- Code Coverage via FusionReactor
- Much more!
TestBox is maintained under the Semantic Versioning guidelines as much as possible. Releases will be numbered in the following format:
<major>.<minor>.<patch>
And constructed with the following guidelines:
- bumpBreaking backward compatibility bumps the major (and resets the minor and patch)
- New additions without breaking backward compatibility bump the minor (and resets the patch)
- Bug fixes and misc changes bump the patch
TestBox is open source and licensed under the Apache 2 License. If you use it, please try to mention it in your code or website.
- Copyright by Ortus Solutions, Corp
- TestBox is a registered trademark by Ortus Solutions, Corp
{% hint style="info" %} The ColdBox Websites, Documentation, logo, and content have a separate license, and they are separate entities. {% endhint %}
- Help Group: https://community.ortussolutions.com/c/communities/testbox/11
- BoxTeam Slack : https://boxteam.ortussolutions.com
We all make mistakes from time to time :) So why not let us know about it and help us out? We also love pull requests, so please star us and fork us: https://github.com/Ortus-Solutions/TestBox
TestBox is a professional open source software backed by Ortus Solutions, Corp offering services like:
- Custom Development
- Professional Support & Mentoring
- Training
- Server Tuning
- Security Hardening
- Code Reviews
- Much More
- Official Site: https://www.ortussolutions.com/products/testbox
- Current API Docs: https://apidocs.ortussolutions.com/testbox/current
- Help Group: https://community.ortussolutions.com/c/communities/testbox/11
- Source Code: https://github.com/Ortus-Solutions/TestBox
- Bug Tracker: https://ortussolutions.atlassian.net/browse/TESTBOX
- Twitter: @ortussolutions
- Facebook: https://www.facebook.com/ortussolutions
Because of His grace, this project exists. If you don't like this, don't read it, it's not for you.
Therefore being justified by faith, we have peace with God through our Lord Jesus Christ: By whom also we have access by faith into this grace wherein we stand, and rejoice in hope of the glory of God. - Romans 5:5