使用实例而不是类运行 JUnitCore

微博

我希望以编程方式运行JUnit 4.12+,粗略搜索这样做产生了(在许多其他类似帖子中)这个答案,它规定了以下基本解决方案:

@RunWith(Suite)
@Suite.SuiteClasses ({
    MyTestClass1.class,
    MyTestClass2.class
})
public class MyTestSuite {
}

Result testResults = JUnitCore.runClasses(MyTestSuite.class);

......我能够让它工作,没有汗水。到现在为止还挺好!

问题是:我有一些非常复杂的测试类,需要在运行时实例化/注入非常具体的属性......不是可以从无参数构造函数内部完成的事情。但是上述方法(指定只运行一组类的任何旧实例)不允许您实例化测试类,配置它们,然后运行它们。

有没有办法做到这一点?我在JUnit API 上找不到任何东西我正在寻找类似的东西:

MyTestClass1 mtc1 = new MyTestClass1(...);
MyTestClass2 mtc2 = new MyTestClass2(...);
Result testResults = JUnitCore.run(mtc1, mtc2);
微博

我使用自定义Runner示例(Groovy 伪代码)进行了处理,如下所示:

class MyRunner extends Runner {
    @Override
    Description getDescription() {
        return null
    }

    @Override
    void run(RunNotifier notifier) {
        // LoginTests.class is a test class I want to run
        LoginTests loginTests = new LoginTests(<my args here>)

        Description description = Description.createSuiteDescription(LoginTests)
        notifier.fireTestStarted(description)
        try {
            log.info("About to doSomething()...")
            loginTests.doSomething()
            log.info("Did it...")
            notifier.fireTestFinished(description)
        } catch(Throwable throwable) {
            log.info("doSomething() failed...")
            notifier.fireTestAssumptionFailed(new Failure(description, throwable))
        }
    }
}

Result testResults = new JUnitCore().run(Request.runner(new MyRunner()))

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用JUnitCore时java.lang.NoClassDefFoundError

JUnitCore在Eclipse插件中给出“无可运行方法”错误

无法找到或加载主类org.junit.runner.JUnitCore

使用“以Spring Boot应用程序身份运行”启动Apllication时,JUnitCore运行不起作用

如何在JUnit 5中使用JUnitCore运行参数化测试?

(JUnitCore.runClasses)Java中的“ Main”类如何处理Junit文件?

JUnitCore.runClasses不打印任何内容

SureFire JUnitCore和JUnit4 Runners有什么区别

如何使用Injector而不是singleton获取类的新实例

使用Class实例而不是Class进行类继承

使用对象实例而不是类的 Java 注释反射

在实例字段中使用时,类函数返回“不是函数”

Java:返回类(不是实例)

定义类的repr()(不是实例)

不是类Vectors java的实例

为什么抽象类实例化不是dart中的运行时错误?

为什么使用类方法而不是仅使用实例的类名?

反射-从类型到类(不是类的实例)

预期的类的实例,而不是类本身错误

当使用execute而不是invoke运行任务时,为什么args不是Rake :: TaskArguments的实例?

Scala:对反射/运行时实例使用正确的类型类实例

返回派生类实例而不是基类实例

使用对象的运行时类实例化泛型类

使用类的Vue实例

返回扩展抽象基类的具体类的类,而不是实例?

Java对象不是声明类的实例

Mockito对象不是声明类的实例

Python docstring类型注释-类,不是实例?

Hibernate-对象不是声明类的实例