帮助网友解决一个drools的问题
?测试的父类如下:
?
import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.util.Arrays;import java.util.Collection;import java.util.Map;import org.drools.KnowledgeBase;import org.drools.KnowledgeBaseFactory;import org.drools.builder.DecisionTableConfiguration;import org.drools.builder.DecisionTableInputType;import org.drools.builder.KnowledgeBuilder;import org.drools.builder.KnowledgeBuilderFactory;import org.drools.builder.ResourceType;import org.drools.definition.KnowledgePackage;import org.drools.io.ResourceFactory;import org.drools.runtime.StatelessKnowledgeSession;public class KATestBase {public void testExcel(String fileName, Map<String, Object> params)throws Exception {System.out.println("---------------begin------------------------");DecisionTableConfiguration dtableconfiguration = KnowledgeBuilderFactory.newDecisionTableConfiguration();dtableconfiguration.setInputType(DecisionTableInputType.XLS);final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();File file = new File("E:\\workspace\\epct\\rule\\src\\test\\resources\"+ fileName);InputStream is = new FileInputStream(file);//InputStream is = new ClassPathResource(fileName).getInputStream();kbuilder.add(ResourceFactory.newInputStreamResource(is,"UTF-8"),ResourceType.DTABLE);if (kbuilder.hasErrors()) {System.out.println(kbuilder.getErrors().toString());}Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();kbase.addKnowledgePackages(pkgs);StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();ksession.execute(Arrays.asList(new Object[] {params}));System.out.println("---------------end------------------------");}}
?测试的子类如下:
?
import java.util.Arrays;import java.util.Collection;import java.util.HashMap;import java.util.Map;import junit.framework.Assert;import org.junit.Test;import org.junit.runner.RunWith;import org.junit.runners.Parameterized;import org.junit.runners.Parameterized.Parameters;@RunWith(Parameterized.class) public class DroolsTest extends KATestBase{ private KADest param; private String extected; public DroolsTest(KADest param,String extected) { this.param = param; this.extected = extected; } public static class KADest {private String orderTime;private String orderTotal;public KADest(String orderTime, String orderTotal) {this.orderTime = orderTime;this.orderTotal = orderTotal;}public Map<String,Object> getParams(){Map<String,Object> params = new HashMap<String,Object>();params.put("orderTime", orderTime);params.put("orderTotal", orderTotal);params.put("discountTotal", 0);return params;}} @Parameters public static Collection<?> contructData(){ return Arrays.asList(new Object[][]{ {new KADest("2013-01-02 12:30:31","6"),"3"}, {new KADest("2013-01-02 12:30:31","1"),"0"}, {new KADest("2013-01-02 12:30:31","2"),"1"}, {new KADest("2013-01-01 12:30:31","2"),"1"}, {new KADest("2013-01-01 12:30:31","2"),"1"}, {new KADest("2013-01-01 12:30:31","2"),"1"}, {new KADest("2013-01-04 12:30:31","2"),"0"}, {new KADest("2013-01-04 12:30:31","2"),"0"}, {new KADest("2013-01-04 12:30:31","2"),"0"}, }); } @Test public void testKaDest() throws Exception{ Map<String,Object> params = new HashMap<String,Object>(); params.putAll(param.getParams()); System.out.println(params); super.testExcel("ka/drools.xls", params); System.out.println(params); Assert.assertEquals(extected, "" +params.get("discountTotal")); }
?单元测试结果如下:
?
?