[英]How to run JUnit test in Eclipse
我在Eclipse中有以下測試類:
package org.drools.example;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.compiler.DroolsError;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderErrors;
import org.drools.rule.Package;
public class RuleTest {
//@Test
public void shouldFireHelloWorld() throws IOException, DroolsParserException {
RuleBase ruleBase = initialiseDrools();
WorkingMemory workingMemory = initializeMessageObjects(ruleBase);
int expectedNumberOfRulesFired = 1;
int actualNumberOfRulesFired = workingMemory.fireAllRules();
assertThat(actualNumberOfRulesFired, is(expectedNumberOfRulesFired));
}
private RuleBase initialiseDrools() throws IOException, DroolsParserException {
PackageBuilder packageBuilder = readRuleFiles();
return addRulesToWorkingMemory(packageBuilder);
}
private PackageBuilder readRuleFiles() throws DroolsParserException, IOException {
PackageBuilder packageBuilder = new PackageBuilder();
String ruleFile = "/org/drools/example/helloWorld.drl";
Reader reader = getRuleFileAsReader(ruleFile);
packageBuilder.addPackageFromDrl(reader);
assertNoRuleErrors(packageBuilder);
return packageBuilder;
}
private Reader getRuleFileAsReader(String ruleFile) {
InputStream resourceAsStream = getClass().getResourceAsStream(ruleFile);
return new InputStreamReader(resourceAsStream);
}
private RuleBase addRulesToWorkingMemory(PackageBuilder packageBuilder) {
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
Package rulesPackage = packageBuilder.getPackage();
ruleBase.addPackage(rulesPackage);
return ruleBase;
}
private void assertNoRuleErrors(PackageBuilder packageBuilder) {
PackageBuilderErrors errors = packageBuilder.getErrors();
if (errors.getErrors().length > 0) {
StringBuilder errorMessages = new StringBuilder();
errorMessages.append("Found errors in package builder\n");
for (int i = 0; i < errors.getErrors().length; i++) {
DroolsError errorMessage = errors.getErrors()[i];
errorMessages.append(errorMessage);
errorMessages.append("\n");
}
errorMessages.append("Could not parse knowledge");
throw new IllegalArgumentException(errorMessages.toString());
}
}
private WorkingMemory initializeMessageObjects(RuleBase ruleBase) {
WorkingMemory workingMemory = ruleBase.newStatefulSession();
createHelloWorld(workingMemory);
return workingMemory;
}
private void createHelloWorld(WorkingMemory workingMemory) {
Message helloMessage = new Message();
helloMessage.setType("Hello");
workingMemory.insert(helloMessage);
}
}
右鍵單擊* .class時,只能看到Run-> Run配置。 我應該在“配置”中選擇哪些設置才能執行該程序? 如果我將其作為Java應用程序運行,它將顯示:
JUnit version 4.10
Time: 0.001
OK (0 tests)
這是因為RuleTest沒有擴展Junit Base測試類,您應該這樣做才能讓Eclipse知道其Junt類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.