test 4 jシーン化テスト
3254 ワード
初歩的な文書はこれを参照https://github.com/test4j/test4j.doc
1.シーン化テスト
1.シーン化テスト
以前のユニットテストは単一のテスト例に接触したことがあるだけで、test 4 jにはシーン化されたテスト案が存在しているので、まず初歩的に感じてみましょう.
1.1 BeforeScenarioDemo継承Jspec 1.2コードに@Given,@When,@Thenの3つのメソッドを修飾する注記1.3@Name修飾メソッドパラメータが表示されますpublic class BeforeScenarioDemo extends JSpec {
private Integer var = 0;
@Given
public void setVar(final @Named(" ") Integer var//
) throws Exception {
this.var = var;
}
@When
public void addVar(final @Named(" ") Integer inc//
) throws Exception {
this.var += inc;
}
@Then
public void checkVar(final @Named(" ") Integer expected//
)throws Exception {
want.number(var).isEqualTo(expected);
}
}
2.BeforeScenarioDemo.story BeforeScenario
Given set var
【 =23】
Scenario
When add var
【 =10】
Then check var
【 =33】
Given set varを例にとると、Givenは対応する注釈を表し、set varは対応する方法を表し、setVarと書くこともできる
テスト結果:====================Begin Scenario-01: ====================
* SUCCESS Given : setVar
* SUCCESS When : addVar
* SUCCESS Then : checkVar
====================End Scenario-01: ====================
2.Springサポート
@SpringContextを使用してspringプロファイルを追加@SpringContext("spring-config.xml")
public class TestDemo extends Test4J {
@Autowired
private TestService testService;
@Test
public void test1()
{
testService.sayHello();
}
}
3.stepステップテスト
Mix注記を使用してステップテストを実行@Mix({ StepsDemo1.class, StepsDemo2.class, StepsDemo3.class })
@SpringContext("spring/spring-demo.xml")
public class StepsSpec extends JSpec {
@Override
protected void initSharedData() {
this.shared = new MyName();
}
public static class MyName implements SharedData {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
public class StepsDemo1 extends Steps.Default {
private String name;
/**
* Steps spring bean
*/
@SpringBeanByName
UserService userService;
@Given
public void method1(final @Named(" ") String name) {
want.object(userService).notNull();
this.name = name;
super.shared.setName(name);
}
@When
public void doing() throws Exception {
want.object(userService).notNull();
this.name = "hello, " + this.name;
}
@Then
public void checkPara(final @Named(" ") String expected//
) throws Exception {
want.object(userService).notNull();
want.string(name).isEqualTo(expected);
}
}
public class StepsDemo2 extends Steps.Default {
@Step
public void printSomething() {
System.out.println("print name:" + super.shared.getName());
}
}
public class StepsDemo3 {
@Step
public void printSomething3() {
System.out.println("print name, no shared data");
}
}
public class BeforeScenarioDemo extends JSpec {
private Integer var = 0;
@Given
public void setVar(final @Named(" ") Integer var//
) throws Exception {
this.var = var;
}
@When
public void addVar(final @Named(" ") Integer inc//
) throws Exception {
this.var += inc;
}
@Then
public void checkVar(final @Named(" ") Integer expected//
)throws Exception {
want.number(var).isEqualTo(expected);
}
}
BeforeScenario
Given set var
【 =23】
Scenario
When add var
【 =10】
Then check var
【 =33】
Given set varを例にとると、Givenは対応する注釈を表し、set varは対応する方法を表し、setVarと書くこともできる
テスト結果:
====================Begin Scenario-01: ====================
* SUCCESS Given : setVar
* SUCCESS When : addVar
* SUCCESS Then : checkVar
====================End Scenario-01: ====================
2.Springサポート
@SpringContextを使用してspringプロファイルを追加@SpringContext("spring-config.xml")
public class TestDemo extends Test4J {
@Autowired
private TestService testService;
@Test
public void test1()
{
testService.sayHello();
}
}
3.stepステップテスト
Mix注記を使用してステップテストを実行@Mix({ StepsDemo1.class, StepsDemo2.class, StepsDemo3.class })
@SpringContext("spring/spring-demo.xml")
public class StepsSpec extends JSpec {
@Override
protected void initSharedData() {
this.shared = new MyName();
}
public static class MyName implements SharedData {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
public class StepsDemo1 extends Steps.Default {
private String name;
/**
* Steps spring bean
*/
@SpringBeanByName
UserService userService;
@Given
public void method1(final @Named(" ") String name) {
want.object(userService).notNull();
this.name = name;
super.shared.setName(name);
}
@When
public void doing() throws Exception {
want.object(userService).notNull();
this.name = "hello, " + this.name;
}
@Then
public void checkPara(final @Named(" ") String expected//
) throws Exception {
want.object(userService).notNull();
want.string(name).isEqualTo(expected);
}
}
public class StepsDemo2 extends Steps.Default {
@Step
public void printSomething() {
System.out.println("print name:" + super.shared.getName());
}
}
public class StepsDemo3 {
@Step
public void printSomething3() {
System.out.println("print name, no shared data");
}
}
@SpringContext("spring-config.xml")
public class TestDemo extends Test4J {
@Autowired
private TestService testService;
@Test
public void test1()
{
testService.sayHello();
}
}
Mix注記を使用してステップテストを実行
@Mix({ StepsDemo1.class, StepsDemo2.class, StepsDemo3.class })
@SpringContext("spring/spring-demo.xml")
public class StepsSpec extends JSpec {
@Override
protected void initSharedData() {
this.shared = new MyName();
}
public static class MyName implements SharedData {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
public class StepsDemo1 extends Steps.Default {
private String name;
/**
* Steps spring bean
*/
@SpringBeanByName
UserService userService;
@Given
public void method1(final @Named(" ") String name) {
want.object(userService).notNull();
this.name = name;
super.shared.setName(name);
}
@When
public void doing() throws Exception {
want.object(userService).notNull();
this.name = "hello, " + this.name;
}
@Then
public void checkPara(final @Named(" ") String expected//
) throws Exception {
want.object(userService).notNull();
want.string(name).isEqualTo(expected);
}
}
public class StepsDemo2 extends Steps.Default {
@Step
public void printSomething() {
System.out.println("print name:" + super.shared.getName());
}
}
public class StepsDemo3 {
@Step
public void printSomething3() {
System.out.println("print name, no shared data");
}
}