JUnit - 参数化测试 - 停止编译

JUnit - Parameterized Test - Stopping compiling

我在下面编写的代码在构造函数或@Before(取决于隐藏)之前停止编译。没有错误,它甚至不能 运行 一次。

我用教程做到了: https://www.tutorialspoint.com/junit/junit_parameterized_test.htm

有人能知道这段代码有什么问题吗?

import static org.junit.Assert.*;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Scanner;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;



    @RunWith(Parameterized.class)
public class ParametryzowaneTestyKarty {
        private ArrayList<Karta> talia;
        private String wynik;
        private karty kartyy;

       @Before
       public void initialize() { 
            kartyy = new karty();
       }

       public ParametryzowaneTestyKarty(ArrayList<Karta> talia, String wynik) {
          this.talia = talia;
          this.wynik = wynik;
       }

       @Parameterized.Parameters
       public static Collection wyniki() throws FileNotFoundException {
           
           File plik22 = new File("...");
           Scanner test = new Scanner(plik22);
           
           while(test.hasNextLine()) { 
                ArrayList<Karta> talia = new ArrayList<>();
                String wiersz = test.nextLine();
           
               String[] parts = wiersz.split(",");
                for(int i=0;i<10;i+=2) {
                    String part0 = parts[i]; 
                    String part1 = parts[i+1];
                    int kol=Integer.parseInt(part0); 
                    int fig=Integer.parseInt(part1);
                    Kolor[] k = Kolor.values();
                    Kolor ko=k[kol];
                    Figura[] f = Figura.values();
                    Figura fi = f[fig];
                    talia.add(new  Karta(ko, fi));
                    String w = parts[10];
                    
                    Arrays.asList(new Object[][] {
                         { talia, w },
                      });
                }
           } 
          return Arrays.asList();     
       } 
       @Test
       public void TestParametryzowaneKarty() {
           System.out.println("1");
          System.out.println("Karty : " + talia);
          assertEquals(wynik, 
          karty.check(talia));
}   
}

了解您遇到的确切错误会有所帮助。

您的代码存在一些问题,因为 Arrays.asList() 没有达到您的预期,因此方法 public static Collection wyniki() 返回一个空列表。

下面的代码可能会解决这个问题,但我对此表示怀疑,因为 talia 列表被重新用于正在读取的文件中的每一行。

   @Parameterized.Parameters
   public static Collection wyniki() throws FileNotFoundException {
       
       File plik22 = new File("...");
       Scanner test = new Scanner(plik22);
       
       while(test.hasNextLine()) { 
            ArrayList<Karta> talia = new ArrayList<>();
            ArrayList<Object[]> rows = new ArrayList<>();
            String wiersz = test.nextLine();
       
           String[] parts = wiersz.split(",");
            for(int i=0;i<10;i+=2) {
                String part0 = parts[i]; 
                String part1 = parts[i+1];
                int kol=Integer.parseInt(part0); 
                int fig=Integer.parseInt(part1);
                Kolor[] k = Kolor.values();
                Kolor ko=k[kol];
                Figura[] f = Figura.values();
                Figura fi = f[fig];
                talia.add(new  Karta(ko, fi));
                String w = parts[10];

                // new code
                rows.add(new Object[]{talia, w} );
            }
       } 
      return rows;     
   }