栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

检查JUnit Extension抛出特定的异常

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

检查JUnit Extension抛出特定的异常

在尝试了答案中的解决方案和注释中链接的问题之后,我最终使用了JUnit Platform Launcher解决方案。

class DisallowUppercaseLetterAtBeginningTest {    @Test    void should_succeed_if_method_name_starts_with_lower_case() {        TestExecutionSummary summary = runTestMethod(MyTest.class, "validTest");        assertThat(summary.getTestsSucceededCount()).isEqualTo(1);    }    @Test    void should_fail_if_method_name_starts_with_upper_case() {        TestExecutionSummary summary = runTestMethod(MyTest.class, "InvalidTest");        assertThat(summary.getTestsFailedCount()).isEqualTo(1);        assertThat(summary.getFailures().get(0).getException())     .isInstanceOf(RuntimeException.class)     .hasMessage("test method names should start with lowercase.");    }    private TestExecutionSummary runTestMethod(Class<?> testClass, String methodName) {        SummaryGeneratingListener listener = new SummaryGeneratingListener();        LauncherDiscoveryRequest request = request().selectors(selectMethod(testClass, methodName)).build();        LauncherFactory.create().execute(request, listener);        return listener.getSummary();    }    @ExtendWith(DisallowUppercaseLetterAtBeginning.class)    static class MyTest {        @Test        void validTest() {        }        @Test        void InvalidTest() { fail("test should have failed before");        }    }}

JUnit本身不会运行,

MyTest
因为它是不带的内部类
@Nested
。因此,在构建过程中不会有失败的测试。

更新资料

JUnit本身不会运行,

MyTest
因为它是不带的内部类
@Nested
。因此,在构建过程中不会有失败的测试。

这不是完全正确的。JUnit本身也将运行

MyTest
,例如,如果在IDE或Gradle构建中启动了“运行所有测试”。

MyTest
未执行的原因是因为我使用了Maven并使用进行了测试
mvn test
。Maven使用Maven
Surefire插件执行测试。该插件具有默认配置,该配置 排除 所有嵌套类,例如
MyTest



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574371.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号