JUnit参数化数据注入
JUnit Parameterized data injection
我正在创建一个测试,它从外部源获取数据,在我的例子中是 json 文件。我正在使用 JUnit Parameterized 在相应字段中进行数据注入。
@RunWith(Parameterized.class)
public class MyTest extends CommonTest
{
@Parameterized.Parameter
public String field1;
@Parameterized.Parameter(1)
public String field2;
public static Collection<Object[]> params() throws PropertyNotFoundException
{
final JsonReader reader = new JsonReader(new FileReader("path to the json file"));
// here I am reading the tests sampledata from the json file
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/test-spring.xml"})
@ActiveProfiles(resolver = SpringActiveProfileResolver.class)
public class CommonTest
{
@ClassRule
public static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule();
@Rule
public final SpringMethodRule springMethodRule = new SpringMethodRule();
...
}
目前我在 params() 方法中使用到外部源的静态路径。如何使用此外部源的相对路径而不对其进行硬编码? json 文件在 test-spring.xml
旁边
我这里的问题是params()方法是静态的,不能通过Spring注入东西来解决
我该如何解决这个问题?
我看到 test-spring.xml
在你的 class 路径的根目录下,所以如果 json 文件也是,那么你可以像这样获得文件句柄...
Resource resource = new ClassPathResource("/file.json");
File file = resource.getFile();
如果您想将 json 文件放在您的测试旁边,您可能还想看看 ClassRelativeResourceLoader class
我正在创建一个测试,它从外部源获取数据,在我的例子中是 json 文件。我正在使用 JUnit Parameterized 在相应字段中进行数据注入。
@RunWith(Parameterized.class)
public class MyTest extends CommonTest
{
@Parameterized.Parameter
public String field1;
@Parameterized.Parameter(1)
public String field2;
public static Collection<Object[]> params() throws PropertyNotFoundException
{
final JsonReader reader = new JsonReader(new FileReader("path to the json file"));
// here I am reading the tests sampledata from the json file
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/test-spring.xml"})
@ActiveProfiles(resolver = SpringActiveProfileResolver.class)
public class CommonTest
{
@ClassRule
public static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule();
@Rule
public final SpringMethodRule springMethodRule = new SpringMethodRule();
...
}
目前我在 params() 方法中使用到外部源的静态路径。如何使用此外部源的相对路径而不对其进行硬编码? json 文件在 test-spring.xml
旁边我这里的问题是params()方法是静态的,不能通过Spring注入东西来解决
我该如何解决这个问题?
我看到 test-spring.xml
在你的 class 路径的根目录下,所以如果 json 文件也是,那么你可以像这样获得文件句柄...
Resource resource = new ClassPathResource("/file.json");
File file = resource.getFile();
如果您想将 json 文件放在您的测试旁边,您可能还想看看 ClassRelativeResourceLoader class