【问题标题】:Workaround to support org.junit.runners.Parameterized in Gradle在 Gradle 中支持 org.junit.runners.Parameterized 的解决方法
【发布时间】:2015-08-12 06:44:14
【问题描述】:
Gradle 无法运行带有以下注释的 JUnit 测试:
import org.junit.runners.Parameterized;
@RunWith(value = Paremetrized.class)
public class UnitTest {
// ...
}
自 2014 年 6 月以来,此问题的 official issue 尚未解决。
是否有任何解决方法可以启用这些测试(在 Gradle 2.4 中)?
【问题讨论】:
标签:
java
unit-testing
junit
gradle
【解决方案1】:
JUnit 的Parameterized 的替代方案是开源第三方库junit-dataprovider。 Gradle 支持它(用 2.4 测试)。
usage 类似:
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.tngtech.java.junit.dataprovider.DataProvider;
import com.tngtech.java.junit.dataprovider.DataProviderRunner;
import com.tngtech.java.junit.dataprovider.UseDataProvider;
@RunWith(DataProviderRunner.class)
public class DataProviderTest {
@DataProvider
public static Object[][] dataProviderAdd() {
// @formatter:off
return new Object[][] {
{ 0, 0, 0 },
{ 1, 1, 2 },
/* ... */
};
// @formatter:on
}
@Test
@UseDataProvider("dataProviderAdd")
public void testAdd(int a, int b, int expected) {
// Given:
// When:
int result = a + b;
// Then:
assertEquals(expected, result);
}
}
Gradle 的依赖行:
testCompile 'com.tngtech.java:junit-dataprovider:1.9.3'