- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个测试用例,其中我以枚举的形式提供了测试数据。喜欢
enum TestTransactions {
TestTransactions(Transaction T1, Transaction T2, String expectedOutput){}
}
在我的测试类中,我必须将其用作:
class Test {
private final static int REPETITION_COUNT = TestTransactions.values().length;
@RepeatedTest(value=REPETITION_COUNT)
private void testAllTransactions(RepetitionInfo info) {
TestTransactions currentTest = TestTransactions.values()[info.getCurrentRepetition()];
logger.info("Executing test for " + currentTest.name());
setExpectationsFor(currentTest);
whenControllerIsCalled();
Assert.assertEquals(currentTest.getExpectedOutput(), result.getBody());
}
}
这里这行@RepeatedTest(value=REPETITION_COUNT)
给出了编译错误,指出“属性值必须是常量。”
有什么办法可以实现这一点吗?尽管我也尝试在构造函数和静态 block 内以及声明期间分配 REPETITION_COUNT (声明为final)
,如本示例所示。
最佳答案
如果我正确理解您的用例,您希望将 @ParameterizedTest
与 @EnumSource
一起使用,而不是 @RepatedTest
- 这就是 JUnit5 的方式开箱即用地支持此类用例。
首先,添加对 org.junit.jupiter:junit-jupiter-params
的依赖(它提供对 @ParameterizedTest
的支持),然后:
class Test {
@ParameterizedTest
@EnumSource
void testAllTransactions(TestTransactions currentTest) {
logger.info("Executing test for " + currentTest.name());
setExpectationsFor(currentTest);
whenControllerIsCalled();
Assertions.assertEquals(currentTest.getExpectedOutput(), result.getBody());
}
}
还有 JUnit 5 的旁注:
@Test
方法应该是包私有(private)的(无可见性限定符),而不是 private
断言
而不是断言
关于java - 我可以使用 @RepeatedTest 注释 JUnit5 获得变量值吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59929598/
例如,我们有 @RepeatedTest : import org.junit.jupiter.api.RepeatedTest; import static org.junit.jupiter.ap
我读过 following article我知道我可以通过添加以下注释来要求 junit 多次执行测试: @RepeatedTest(value = 3, name = RepeatedTest.LO
我有一个测试用例,其中我以枚举的形式提供了测试数据。喜欢 enum TestTransactions { TestTransactions(Transaction T1, Transactio
目前,我正在(尝试)将现有的 Junit4 项目迁移到 Junit5。 我被困在必须同时使用@RepeatedTest 和@ParameterizedTest 的地方。尝试这样做会引发默认异常 - N
我在使用 JUnit 5 时遇到以下问题。我想运行 15 次测试,所以我使用了注释 @RepeatedTest(15) 并且它起作用了。但问题是,在每次运行中,它都会调用 @BeforeEach 方法
我是一名优秀的程序员,十分优秀!