相关疑难解决方法(0)

你如何断言在JUnit 4测试中抛出某个异常?

如何以惯用方式使用JUnit4来测试某些代码是否会抛出异常?

虽然我当然可以这样做:

@Test
public void testFooThrowsIndexOutOfBoundsException() {
  boolean thrown = false;

  try {
    foo.doStuff();
  } catch (IndexOutOfBoundsException e) {
    thrown = true;
  }

  assertTrue(thrown);
}
Run Code Online (Sandbox Code Playgroud)

我记得有一个注释或一个Assert.xyz或者其他东西,对于这些类型的情况来说,远不如KUndgy 和JUnit的精神.

java junit assert exception junit4

1915
推荐指数
24
解决办法
120万
查看次数

JUnit 5:将 spring 组件注入扩展(BeforeAllCallback / AfterAllCallback)

tl;dr:如何在所有测试运行之前将自定义数据提供程序实例化为 Spring 组件?

是否有一种聪明的方法可以将 Spring 组件注入到实现 的自定义 JUnit Jupiter 扩展中BeforeAllCallback?该beforeAll方法应该在MyTestClass执行之前触发一个复杂的过程@ExtendWith(OncePerTestRunExtension.class)

我创建了一个 Spring Boot 应用程序 ( src/main/java),它为我的测试 ( src/test/java) 提供了必要的数据。为测试准备数据可能需要长达几个小时的时间。它还使我可以抽象访问一些休息端点。

在所有测试类的过程之间,数据不会改变。所以我只想提取一次数据。

只在一个类中编写所有测试是可行的,但我认为分成不同的类可以提供更好的概览。

java junit spring-boot junit5

9
推荐指数
2
解决办法
4565
查看次数

JUnit 5 - 为整个测试套件提供设置和拆卸

我的要求是对一组测试进行一些初始化,并在所有测试完成后将其清除。这些测试围绕几个测试类进行,因为它们不是密切相关的,但需要一个共同的初始化。

我正在使用@SelectClasses来形成套件并尝试使用@ExtendWith应该处理预处理和后处理的自定义扩展。这不起作用,我不确定 JUnit 中是否存在合适的解决方案。共享已经尝试过的示例代码。

套房:

@SelectClasses({FirstTest.class, SecondTest.class})
@ExtendWith(SuiteExtension.class)
@RunWith(JUnitPlatform.class)
@SuiteDisplayName("test suite")
public class SuiteClass {
}
Run Code Online (Sandbox Code Playgroud)

延期:

public class SuiteExtension implements BeforeAllCallback, AfterAllCallback {

    @Override
    public void afterAll(ExtensionContext context) throws Exception {
        System.out.println("afterAll");
    }

    @Override
    public void beforeAll(ExtensionContext context) throws Exception {
        System.out.println("beforeAll");
    }
}
Run Code Online (Sandbox Code Playgroud)

测试类 1:

public class FirstTest {

    @Test
    void test1(){
        System.out.println("test1");
    }
}
Run Code Online (Sandbox Code Playgroud)

测试类 2:

public class SecondTest {

    @Test
    void test2(){
        System.out.println("test2");
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

test1
test2
Run Code Online (Sandbox Code Playgroud)

预期输出:

beforeAll
test1
test2 …
Run Code Online (Sandbox Code Playgroud)

java junit unit-testing junit5 junit5-extension-model

1
推荐指数
1
解决办法
5149
查看次数