Blog

Luis Majano

March 11, 2016

Spread the word


Share your thoughts

Team TestBox is proud to bring our latest release to the masses, v2.3.0.  This release includes some minor fixes and a plethora of cool new features, mostly thanks to Mr Eric Peterson and our Slack community. It has been incredible to get so much community support in this project and so many pull requests and even to our documentation. So thank you so much for supporting and believing in us. This release is for you!

Getting Started

All the docs have been updated in our documentation book and check out the what's new page for an in-depth overview of this release.

You can also very easily get started or update your project with TestBox via CommandBox CLI for ColdFusion (CFML):


# install testbox
box install testbox

# update testbox
box update testbox

#what you thought there was more?

Major Features

This is a big minor release including some great new functionality like life-cycle annotations, complete nested aroundEach() abilities, line number problem identifications, Travis support, new $throws() expressive method for mocking exceptions, and tons of other little updates to make your testing easier and pleasurable. Enjoy!

Release Notes

Here are all the tickets for this release

Bugs Squashed

  • [TESTBOX-140] - Allow Mocking of an Interface that implements another interface

New Features

  • [TESTBOX-158] - Give line number when an expectation fails or errors out
  • [TESTBOX-150] - new expressive exception throwing goodness: $throws()
  • [TESTBOX-161] - Recursively call parent `aroundEach` functions in reverse tree format
  • [TESTBOX-162] - Add annotation hooks for lifecycle methods
  • [TESTBOX-163] - remove the TestBox tag contexts from the beginning of Failure Origins
  • [TESTBOX-164] - Make test harness easier for development via CommandBox
  • [TESTBOX-165] - Add travis build support for supporting pull requests and test matrixes
  • [TESTBOX-166] - Update API Docs to leverage DocBox instead

Improvements

  • [TESTBOX-160] - Explicitly place the instance "scope" in the variables scope due to lucee full cascade support
  • [TESTBOX-167] - update string buffers to string builders

Add Your Comment

Recent Entries

BoxLang 3.4 Blog Series Part I: Gateways, One Interface, Any Platform

BoxLang 3.4 Blog Series Part I: Gateways, One Interface, Any Platform

Every AI agent that touches something real eventually needs a human in the loop. Someone has to approve the delete, confirm the wire transfer, or just say "go ahead" before a tool call runs. The question BoxLang AI 3.4.0 answers is: approve it how? A terminal prompt? A webhook? A Slack button?

Luis Majano
Luis Majano
September 04, 2026
BoxLang 1.17 Series Part1 : Module Inception

BoxLang 1.17 Series Part1 : Module Inception

BoxLang has always been an extensible language. As of 1.17.0, it is a hierarchically extensible one. Every module ecosystem you have worked in is flat. You declare a list of dependencies and something outside the language, a package manager or a build tool, resolves and downloads and orders them. The language itself has no opinion about the shape of the graph. It sees a list, not a tree.

Luis Majano
Luis Majano
September 04, 2026
Why Migrate from ColdFusion to BoxLang? 10 Reasons to Modernize Your CFML Applications

Why Migrate from ColdFusion to BoxLang? 10 Reasons to Modernize Your CFML Applications

For organizations running applications built with ColdFusion or CFML, modernization often comes with an uncomfortable question:

“Do we keep investing in the platform we already have, or do we rewrite everything in another language?”

That choice is not as binary as it may seem.

At Into the Box 2026, Ortus Solutions Senior Architect and BoxLang core developer Jon Clausen presented a session titled “Top Ten Reasons to Migrate to Bo...

Cristobal Escobar
Cristobal Escobar
September 04, 2026