问题背景
我有几个JUnit测试,例如从目录中获取每个文件并对其执行测试。如果我在TestCase中实现了一个test方法,在一个循环里读取文件做测试,则只会显示一个可能失败或成功的测试。这样的缺点是一旦中间有个测试用例不通过,后面的测试都不会进行了。如何编写TestCase/TestSuite,以便每个文件都显示为单独的测试,即使中间有一个测试失败也不会影响其他测试用例。
解决方法
使用Junit 4的Parameterized/参数化测试。例子:
package yuth.junit.fromFile;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
/**
* 从文件读入测试数据,动态构造测试用例。基于jUnit 4,Junit 3下不可用。
* @author yuth
* <p>
* @version 1.0 2018年8月25日
*
*/
@RunWith(Parameterized.class)
public class TestDemo
{
private File file;
@Parameters
public static Collection<Object[]> getFiles()
{
Collection<Object[]> params