我希望这个场景有点让我困惑。我想运行一些测试用例使用jUnit或testng与不同的数据集从csv文件。下面给出了我尝试过的代码片段,但它仍然有效,
private static CSVReader csvReader = null;
@BeforeClass
public static void setUp() {
csvReader = new CSVReader(new FileReader(fileName));
}
@Test
public void test1() {
.......
.......
System.out.println(csvReader[0]);
}
@Test
public void test2() {
.......
.......
System.out.println(csvReader[1]);
}
@Test
public void test3() {
.......
.......
System.out.println(csvReader[2]);
}
@Test
public void test4() {
.......
.......
System.out.println(csvReader[3]);
}
我的问题是,我需要在不同的测试用例中使用来自每一列的数据,如果csv文件中有多行,我需要再次迭代所有测试用例。我尝试过使用理论和数据点,但它的工作方式是,第一个案例使用csv文件中的所有行运行,它移动到下一个测试案例,然后使用csv文件中的所有行再次运行。
我希望解决方案运行test1()与第一行的第一列,test2()与第一行的第二列,test3()与第一行的第三列和test4()与第一行的第四列,然后同样需要迭代与第二行等等。测试用例是否可以这样迭代?就我所搜索到的,我们可以以多种方式迭代特定的测试用例。我的问题是,有没有可能用一组数据迭代一个类中的所有测试,然后用来自csv的另一组数据再次重申这个类。
我们可以使用junit或testng实现这一点吗?如果是这样,请证明一些示例代码。提前谢谢!
TestNG解决方案是:
public class YourTest {
@DataProvider
public static Object[][] data() {
try( FileReader read = new FileReader(fileName)) {
CSVReader csvReader = new CSVReader(reader);
List<CSVRecord> records = ... read data;
Object[][] parameters = new Object[records.length][1];
for(int i=0; i<records.length; i++) {
parameters[i][0] = records.get(i);
}
return parameters;
}
}
@Test(dataProvider="data")
public void test(CsvRecord record) {
...do something with the record
}
}
嗯,有参数化测试...你可以用它们。
@RunWith(Parameterized.class)
public class YourTest {
@Parameters
public static Collection<Object[]> data() {
try( FileReader read = new FileReader(fileName)) {
CSVReader csvReader = new CSVReader(reader);
List<CSVRecord> records = ... read data;
Object[][] parameters = new Object[records.length][1];
for(int i=0; i<records.length; i++) {
parameters[i][0] = records.get(i);
}
return parameters;
}
}
private CsvRecord record; // [0] from the array goes here
public YourTest (CsvRecord record) {
this.record = record;
}
@Test
public void test() {
...do something with the record
}
}
问题内容: 有没有办法告诉JUnit在继续下一个测试用例之前,用不同的数据连续运行一个特定的测试用例多次? 问题答案: 看看junit 4.4的理论:
我试图使用XML和TestNG运行一个测试套件,但是我总是同时使用Eclipse和命令行得到相同的消息: 该文件已正确读取,但测试似乎没有运行。 以下是我的testng.xml的内容: 这是我的目录结构在Eclipse中的样子: 此外,这也是我试图通过命令行运行测试套件的方式: 我尝试过通过eclipse清理项目,但似乎没有帮助。我也试过跑步: < code>mvn clean,但它也没有完成工作
我正在尝试运行配置套件文件的并行测试。测试是针对使用Selenium的web应用程序。套件文件由多个测试组成。每个测试都包含多个测试类。每个测试中的第一个类用于初始化(@beforetest)WebDriver并关闭它(@aftertest)。WebDriver是静态的,以便将其传递给其他类(原因是我们需要从最后一个测试类结束的地方继续测试)。 当套件配置为按顺序运行测试时,测试将成功运行。但是当
我有一个通用代码库,需要用不同的实现和运行时配置进行测试。考虑使用多个DAO实现的服务。我有测试Dao接口的通用单元测试(需要Dao自动连接),我想从不同的项目中调用这些测试。 基本上我想要这样的东西。在共享的通用项目中,我的测试将有效。所以本质上,在共享项目中,我有我的测试,例如。 然后在实现Dao的其他项目中,我会: . 同样,有多个项目以不同的方式实现DAO层,我想分享通用测试。 如果我能将
例如: 数据提供程序1:dataA 数据提供程序2:dataB,dataC 数据提供程序3:dataD、dataE、dataG 所以我的测试需要一个数据提供者。但是我希望它根据测试组为不同的测试类型选择不同的数据提供者。例如,如果我正在运行“smoke”组,那么我希望使用数据提供者1;如果我正在运行“sanity”组,那么我希望运行数据提供者1和数据提供者2;如果我正在运行“regression”
我有一个Selenium项目,使用Maven和TestNG。 我已经尝试了几种不同的方法来使用Maven命令运行测试(我使用的是sure fire插件)。当我运行Maven时,测试不会运行。没有错误。 有没有人有一个很好的例子或教程,我可以遵循使我的测试运行时,我使用mvn测试? 提前道谢。 以下是输出: 和POM文件中的surefire配置: