package org.jbehave.examples.threads.steps; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import org.jbehave.core.annotations.When; public class ThreadsSteps { @When("$name counts to $n Mississippi") public void whenSomeoneCountsMississippis(String name, AtomicInteger n) { long start = System.currentTimeMillis(); System.out.println(name + " starts counting to " + n); for (int i = 0; i < n.intValue(); i++) { System.out.println(name + " says " + i + " Mississippi (after " + elapsedSeconds(start) + " s)"); sleepFor(1, TimeUnit.SECONDS); } } private long elapsedSeconds(long start) { return (System.currentTimeMillis() - start)/1000L; } private void sleepFor(int i, TimeUnit unit) { try { unit.sleep(i); } catch (InterruptedException e) { System.out.println("Yawn! Who's there?"); throw new RuntimeException(e); } } @When("something bad happens") public void whenSomethingBadHappens() { throw new RuntimeException("C'est la vie"); } }