![](/img/trans.png)
[英]How configure correctly @RunWith(Parameterized.class) + SpringClassRule + SpringMethodRule with a custom @Rule?
[英]junit @RunWith(Parameterized.class) annotation is throwing null
我有一個擴展到 baseTest 的測試,這是我包含參數的地方。
ATest.class
public class ATest extends BaseTest {
@Test
public void test() {
System.out.println(fSomething);
}
}
BaseTest.class
@RunWith(Parameterized.class)
public class BaseTest {
@Parameterized.Parameter
public Boolean fSomething;
@Parameterized.Parameters(name = "fSomething {0}")
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {{true}, {false}});
}
}
我得到空值。 如果我設置構造函數,我會收到此錯誤
org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [boolean arg0] in constructor.
有人可以幫助我了解發生了什么嗎?
我注意到您使用 jUnit 5 中的 Jupiter,但使用 jUnit 4 API。
如果您使用 jUnit 5,請改用@ParametrizedTest
注釋重新實現測試。 從這里開始: https ://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests
如果您想在此特定測試中堅持使用 jUnit 4 API,請替換@Test
注釋的導入:代替org.junit.jupiter.api.Test
(jUnit 5) 使用org.junit.Test
(jUnit 4)。
為了完整起見,我建議為基礎測試類中的參數添加一個構造函數:
public BaseTest(Boolean fSomething) {
this.fSomething = fSomething;
}
...或使用 Lombok 注釋@AllArgsConstructor
或@RequiredArgsConstructor
以防您將字段設為final
(首選)。
在發布的代碼中,我看到@Test 在派生類中使用並在基類中使用@parameterized,因為您同時使用了看到這些問題的注釋。 檢查它的用法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.