unittests are really part of the build, not a special run

Jacob Carlborg via Digitalmars-d digitalmars-d at puremagic.com
Fri Apr 3 12:37:35 PDT 2015


On 2015-04-02 23:46, Wyatt wrote:

> Dealing with it at work, I find it puts us scarily at the mercy of
> regexen in Ruby, which is unsettling to say the least.  More pressingly,
> the "plain English" method of writing tests hinders my ability to figure
> out what the test is actually trying to do. There's not enough structure
> to give you good visual anchors that are easy to follow, so I end up
> having to build a mental model of an entire feature file every time I
> look at it.  It's hugely inconvenient.  And if I can't remember what a
> phrase corresponds to, I have to hunt down the implementation and read
> that anyway, so it's not saving any time or making life any easier.

At work we're using Turnip [1], which basically is Gherkin (Cucumber) 
files running on top of RSpec, best of both worlds Dicebot ;). It has 
two big advatnages compared to regular Cucumber:

* It doesn't use regular expression for the steps, just plain strings

* The steps are implemented in modules which are later included where 
needed. They're not floating around in global space like in Cucumber

We also made some modifications so we have one file with one module 
matching one scenario, which is automatically included based on the 
scenario name. This made it possible to have steps that don't interfere 
with each other. We can have two steps which are identical in two 
different scenarios with two different implementations that doesn't 
conflict.

This also made it possible to take full advantage of RSpec, by creating 
instance variables that keeps the data across steps.

We're also currently experimenting with a gem (I can't recall its name 
right now) which allows to write the Cucumber steps inline in the RSpec 
tests, looking like this:

describe "foobar" do
   Steps "this is a scenario" do
     Given "some kind of setup" do
     end

     When "when something cool happens" do
     end

     Then "something even cooler will happen" do
     end
   end
end

[1] https://github.com/jnicklas/turnip

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list