License

mlunit_2008a originally began as an update to mlUnit (http://sourceforge.net/projects/mlunit/), also available from MATLAB Central file exchange. The purpose was to add support for the new "classdef" style classes in MATLAB 2008a. However, I got a bit carried away, and the "update" became more or less a complete rewrite.

In general, if you are comfortable with the "xUnit" style unit test frameworks (e.g., jUnit), then you'll be very comfortable with this tool. Creating tests involves subclassing a class named TestCase, then adding methods whose names begin with "test". Inside each method you can use the inherited validation methods (assert, assertEquals, assertNotEquals) to check for success or failure. All tests are run automatically and their results recorded and reported after the run.

The GUI is simple, but nice; it uses the undocumented uitree widget to give hierarchical test results, and you also get nice visual feedback from the icons and such. As with mlUnit, you click on failed tests to see the error messages and stacktrace; you can select a line in the stacktrace and click a button to open a code editor and place the cursor at that location in your code. You also get the ability to add tests via a multiselect file dialog, for quick and easy use.

For those of you who prefer to run headless, there is also a simple text test runner with a clear API.

A note of explanation: when I began this (soon after the 2008a release), I didn't realize that the mlUnit developers were also updating their code for the new style classes (mlUnit 2.0). As it turns out, I like my version better so I'm releasing it anyway :)

Warning: Uses the undocumented/unsupported uitree widget, which Mathworks warns may change or go away in a future release.

Comments and Ratings (3)

Now I've run the sample tests with R2013a. It works nicely. However, there were two minor problems.

Firstly, I cannot avoid the warning: "The selected tests appear to not be in your current path[...]" and accepts adding it. The reason seems to be the case of a drive letter. The variable, pname, has a capital "H" and path and pwd returns lower case "h". Here are some excerpts from my tracking the issue.