Introduction
This script provides a simple unit testing framework for RPG Maker VX Ace with very simple expectation-style formatting for test cases. Essentially, this script allows you to use test-driven development from within RPG Maker VX Ace without depending on an external Ruby installation. This is primarily a scripter's tool.
Change Log
v1.0 (April 10th, 2014) - Initial release.
Features
Unit testing capabilities for RPG Maker VX Ace.
Tests may be written externally or within the Ace Script Editor.
Supports both assertion- and expectation-style tests.
Assertions and expectations may be mixed freely.
Support for simple mock objects.
Method stubbing, allowing tests for unpredictable methods.
Capturing of standard output as a string.
Screenshot
Spoiler
How to Use
There is no succinct way to summarize the usage of this script. However, this script is heavily documented with examples if you wish to simply consult the supplied documentation. In addition, a usage tutorial is available at SES VX Ace.
Example Test Case
The following is an example of expectation-style testing done in the SES Test Case framework. The specific test case being shown here was used to test the stubbing feature present in the framework itself. The example shown here is only a small portion of the tests defined for the framework (the entirety of the tests may be found in the source repository under the 'test/' directory).
Spoiler Code:
# ============================================================================# StubTest - Unit tests for stub methods.# ============================================================================class StubTest < SES::Test::Spec describe 'Stub' do Object.new end it 'returns value from block' do subject.stub(:object_id, 0) { 1 < 2 }.must_be_same_as true end it 'returns stubbed value when called inside of block' do subject.stub(:object_id, 0) { subject.object_id }.must_be_same_as 0 end it 'returns original value when called outside of block' do subject.stub(:object_id, 0) subject.object_id.cannot_be_same_as 0 end it 'generates alias of original inside of block' do subject.stub(:object_id, 0) do subject.ses_testcase_stubbed_object_id end.must_be_same_as subject.object_id end it 'removes alias outside of block' do subject.stub(:object_id, 0) subject.cannot_respond_to :ses_testcase_stubbed_object_id endend
Installation
Place this script below the SES Core (v2.0) script (if you are using it) or the Materials header, but above all other custom scripts. This script does not require the SES Core (v2.0), but it is recommended.
Place this script above the SES Console if you are using it.
Credit and Thanks
Solistra
Author's Notes
This script is made available under the terms of the MIT Expat license. View this page for more information.