Blog

Brad Wood

November 04, 2013

Spread the word


Share your thoughts

If you haven't heard, the latest addition to the *Box family is TestBox and is currently out in Alpha. It allows for the standard xUnit style of testing that you may already be familiar with in tools like MXUnit. TestBox also allows for a newer style of testing known as Behavior-Driven Development or BDD. BDD helps focus on writing tests that confirm specific business needs are met by your software and typically use some sort of human-readable DSL that allows the test to be self-documenting and clear on what they are testing for in a way that translates nicely from your business specs.
TestBox's BDD runners are based on closures and only work on CF10 and Railo's latest. Here's an example:

function run(){

    describe("A suite", function(){
        it("contains a spec with awesome expectations", function(){
            expect( true ).toBeTrue();
            expect( [1,2,3] ).toBeArray();

            message = 'foo man choo'; 
            expect( message ).toMatch( '^foo' );
        });
    });

}

As you can see, the tests are very readable. In real world examples, you would focus your expect() and toXXX() methods on real business requirements that define the behavior of your models.

We also have complete backwards compatibility with MXUnit so you can switch immediately with zero test code changes!

Read up on TestBox here: http://wiki.coldbox.org/wiki/TestBox.cfm
Read our intro to BDD here: http://wiki.coldbox.org/wiki/TestBox-bdd-primer.cfm

P.S. In addition to allowing for complete extensibility in regards to assertions, test runners, and reporting, TestBox also has an asynchronous mode to speed up the time it takes to run your large test suites. http://wiki.coldbox.org/wiki/TestBox-BDD-Primer.cfm#Asynchronous_Testing

Add Your Comment

Recent Entries

Introducing the BoxLang Spring Boot Starter: Dynamic JVM Templating for Spring

Introducing the BoxLang Spring Boot Starter: Dynamic JVM Templating for Spring

Spring Boot developers know the pain of evaluating view technologies. Thymeleaf is great — until you need more expressiveness. FreeMarker is powerful — until the syntax fights you. What if you could write templates in a dynamic JVM language that gives you the full power of the platform, feels natural, and requires zero setup to integrate?

Meet the BoxLang Spring Boot Starter.

Luis Majano
Luis Majano
March 13, 2026
Why Swiss Banks Are Modernizing CFML Platforms Without Rewrites

Why Swiss Banks Are Modernizing CFML Platforms Without Rewrites

The growing need to evolve legacy financial platforms safely

Many Swiss banks and financial institutions still operate important systems built on ColdFusion and CFML platforms.

These systems manage a wide range of functions, including:

  • internal banking workflows
  • reporting systems
  • client portals
  • data integration platforms
  • compliance and risk management tools

In many cases, thes...

Cristobal Escobar
Cristobal Escobar
March 13, 2026
Reactive vs Proactive ColdFusion Support: Why Waiting for an Outage Is the Most Expensive Strategy

Reactive vs Proactive ColdFusion Support: Why Waiting for an Outage Is the Most Expensive Strategy

Many ColdFusion environments operate in a reactive mode without realizing it.

Everything seems fine… until something breaks.

A server crashes.

Performance drops suddenly.

An integration stops working.

A security audit reveals missing patches.

At that point the response is urgent:

“Can someone help us fix this now?”

Emergency support is sometimes unavoidable. But when reactive intervention becomes the norm, it usually means something deep...

Cristobal Escobar
Cristobal Escobar
March 12, 2026