package org.test4j.spec.scenario; import java.io.FileInputStream; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import mockit.Mock; import org.test4j.spec.inner.IScenario; import org.test4j.spec.inner.StepType; import org.test4j.spec.scenario.step.JSpecStep; import org.test4j.testng.Test4J; import org.test4j.tools.commons.ResourceHelper; import org.testng.annotations.Test; @SuppressWarnings({ "serial" }) public class TxtJSpecScenarioTest extends Test4J { @Test(groups = "jspec") public void testParseJSpecScenarioFrom_NoScenario() throws Exception { String lines = "line1" + "\n" + "line2"; Story story = TxtJSpecScenario.parseJSpecScenarioFrom(lines); want.list(story.getScenarios()).sizeEq(0); } @Test(groups = "jspec") public void testParseJSpecScenarioFrom() throws Exception { String file = System.getProperty("user.dir") + "/src/test/resources/org/test4j/spec/scenario/TxtJSpecScenarioTest.testParseSpecScenarioFrom.story"; want.file(file).isExists(); new MockUp<TxtJSpecScenario>() { int index = 0; int[] count = new int[] { 12, 13 }; @Mock(invocations = 2) public void $init(List<String> lines, List<JSpecStep> templates) { want.list(lines).sizeEq(count[index++]); } }; List<IScenario> list = TxtJSpecScenario.parseJSpecScenarioFrom(new FileInputStream(file), null).getScenarios(); want.list(list).sizeEq(2); } @Test public void testJSpecScenario() throws Exception { String file = System.getProperty("user.dir") + "/src/test/resources/org/test4j/spec/scenario/TxtJSpecScenarioTest.testJSpecScenario.story"; want.file(file).isExists(); String[] arr = ResourceHelper.readLinesFromFile("file://" + file, "utf8"); List<String> lines = new ArrayList<String>(); for (String line : arr) { lines.add(line); } TxtJSpecScenario jspec = new TxtJSpecScenario(lines, null); want.object(jspec).propertyEq("scenario", "场景描述"); List<JSpecStep> steps = reflector.getField(jspec, "steps"); want.list(steps).sizeEq(4).propertyEqMap(4, new DataMap() { { this.put("type", StepType.Given, StepType.When, StepType.When, StepType.Then); this.put("method", "testMethod", "applyMethod", "执行方法", "checkMethod"); } }); want.list(steps).sizeEq(4).propertyEqMap(4, new DataMap() { { this.put("paras",// <br> new LinkedHashMap<String, String>() { { this.put("变量1", "变量1"); this.put("变量2", "变,分行\n量2"); } }, // <br> new LinkedHashMap<String, String>(), // <br> new LinkedHashMap<String, String>(),// <br> new LinkedHashMap<String, String>() { { this.put("变量1", "变量1"); this.put("变量2", "变,分行\n量2"); } }); } }); } @Test public void testParseJSpecScenarioFrom_ContainSkipScenario() throws Exception { String file = System.getProperty("user.dir") + "/src/test/resources/org/test4j/spec/txt/SkipScenarioDemo.story"; want.file(file).isExists(); List<IScenario> list = TxtJSpecScenario.parseJSpecScenarioFrom(new FileInputStream(file), null).getScenarios(); want.list(list).sizeEq(2).propertyEq("isSkip", new Boolean[] { true, false }); } }