如何在Eclipse中运行JUnit测试

克鲁

我在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类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Jenkins中拆分JUnit测试

如何在Android Studio 1.1中运行简单的JUnit4测试?

如何在Eclipse中运行单个JUnit测试方法?

如何在Eclipse中为新的JUnit测试默认源文件夹?

在Eclipse中找不到以junit测试运行

在Eclipse中的单独JVM中运行每个JUnit测试?

是否可以在Eclipse中运行增量/自动JUnit测试?

从Eclipse中的依赖项jar运行JUnit测试

如何在JUnit测试类中运行(或更改顺序)特定的测试方法?

在Eclipse中,如何多次运行JUnit测试用例

如何在Ant生成脚本中运行JUnit测试,同时从生成的jar中省略测试类?

如何在org.junit下的Eclipse中创建测试套件

Junit测试在Eclipse中运行,但由于“ gradle test”失败

使用Maven在Eclipse中运行单个JUnit4测试

在Eclipse中运行junit测试时发生ClassNotFoundException

如何在Eclipse的“ Junit View”中查看Maven测试结果

Eclipse:如何运行单个继承的JUnit测试方法

在Eclipse中运行@Ignored JUnit测试

在Eclipse中运行junit测试用例时出错

如何在Spring Test Suite中运行JUnit 5测试?

如何在Eclipse中使用运行方式> SWTBot测试运行JUnit 5测试

如何终止已进入无限循环的Eclipse中的JUnit测试运行

如何在gradle 2.x中运行单个测试用例(使用JUnit)?

JUnit如何在Android中测试模型?

如何在Android Studio中运行普通的旧JUnit测试

当Eclipse中的JUnit视图为空时如何运行断言测试

如何在使用旧版本 org.eclipse.equinox.common 的 Eclipse 中运行 JUnit 测试?

如何在 Eclipse 中运行 JUnit 5 测试

如何在命令行中运行 Eclipse+Maven+JUnit 测试