package org.test4j.spec; import java.util.Map; import org.test4j.spec.inner.IScenario; import org.test4j.spec.inner.ISpecMethod; import org.test4j.spec.inner.ISpecPrinter; import org.test4j.spec.inner.ISpecMethod.SpecMethodID; import org.test4j.tools.datagen.DataProviderIterator; /** * 场景测试工厂方法 <br> * 需要在配置文件中声明,或自定义覆盖 * * @author darui.wudr 2013-1-10 下午8:02:51 */ public interface ISpecExecutorFactory { /** * 构造测试场景信息输出器 * * @return */ ISpecPrinter newSpecPrinter(); /** * 查找spec测试类中的步骤方法 * * @param clazz * @return */ Map<SpecMethodID, ISpecMethod> findMethodsInSpec(Class<? extends ISpec> clazz); /** * 初始化Steps实例 * * @param spec * @return */ Map<String, Object> newSteps(ISpec spec); /** * 查找可以(或需要)运行的场景列表 * * @param clazz * @return */ DataProviderIterator<IScenario> findScenario(Class<? extends ISpec> clazz); /** * 执行场景 * * @param spec 场景方法定义对象 * @param scenario 要执行的场景 * @param methods 场景方法列表 * @throws Throwable */ void runScenario(ISpec spec, IScenario scenario, Map<SpecMethodID, ISpecMethod> methods, ISpecPrinter printer) throws Throwable; }