Created
October 7, 2011 13:24
-
-
Save judoole/1270262 to your computer and use it in GitHub Desktop.
GroovyBDDJUnitShit
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Test | |
public void skal_hente_alle_tenant_profiler() { | |
Gitt.at_tenant_profile_eksisterer(new TenantProfile(1, "Single")) | |
Gitt.at_tenant_profile_eksisterer([id:2, description:"Dubletter"]) | |
Gitt.at_tenant_profile_eksisterer(new TenantProfile(id:3, description:"Tribletter")) | |
Naar.jeg_henter_informasjon_om_soknadslista() | |
Saa.skal_antallet_tenant_profiler_vaere(3) | |
} | |
@Autowired | |
private GodAndOdinStep Gitt; | |
@Autowired | |
private GodAndOdinStep Naar; | |
@Autowired | |
private GodAndOdinStep Saa; |
Lesbarhet: Gherkin > GroovyBDD
GroovyBDD #win:
@Test
public void skal_kunne_hente_tenant_profiler()
Gitt.at_...
|_tenant_profile_eksisterer(Object profil)
|_kunden_eksisterer(Object kunde)
|_.....
}
Codecompletion! Yuppie!
Cucumber-jvm #loose
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-core</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
Sagt bittelitt på en annen måte; mens jeg venter på 1.0.0 så lager jeg steps som lett kan gjenbrukes i cucumber-jvm.
Groovy-step:
@Repository
class TenantProfileStep {
@Transactional
public at_tenant_profile_eksisterer(Object profil) {
TenantProfile t = profil as TenantProfile;
simpleJdbcTemplate.update("Insert into TENANT_PROFILES (ID,DESCRIPTION) values (?,?)", t.id, t.description);
}
@Autowired
private SimpleJdbcTemplate simpleJdbcTemplate;
}
Jeg tror disse stepsa skal kunne lett omformes til cucumber-jvm-steps når den dagen kommer. I hopes.
Minner om en hjelpeklasse jeg bruker en gang i blant (BDD støtte på 7 kodelinjer).
public abstract class BDD<T> where T : BDD<T>
{
protected T Given { get { return (T)this; } }
protected T When { get { return (T)this; } }
protected T Then { get { return (T)this; } }
protected T And { get { return (T)this; } }
}
Og her en annen variant:
[TestFixture]
public abstract class SpecFor<T>
{
protected T Subject;
[SetUp]
public void Setup()
{
Subject = Given();
When();
}
protected abstract T Given();
protected abstract void When();
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hvordan er det mer lesbart enn:
Eller implementasjonen for en utvikler: