Data driving ruby tests with meta-programming is one of the more elegant examples of meta-programming in my opinion. Understanding that class definitions are active, and you can add methods in a loop is very powerful.
class LocationTest < ActiveSupport::TestCase
def setup
@location = Location.new
end
{:empty => '', :nil => nil}.each do |key, value|
test "address can't be " + key do
@location.address = value
assert !@location.valid?
end
end
end
NUnit has the ability to do the same thing, but attributes and reflection just aren’t as elegant.