Ecco un altro esempio molto simile a quella di Tim Abell, tuttavia, non si utilizza un quadro di riferimento per il lettore CSV e mostrando le specifiche del test. Nota quando usi il TestCaseAttribute il TestAttribute può essere omesso.
[TestCaseSource("GetDataFromCSV")]
public void TestDataFromCSV(int num1,int num2,int num3)
{
Assert.AreEqual(num1 + num2 ,num3);
}
private IEnumerable<int[]> GetDataFromCSV()
{
CsvReader reader = new CsvReader(path);
while (reader.Next())
{
int column1 = int.Parse(reader[0]);
int column2 = int.Parse(reader[1]);
int column3 = int.Parse(reader[2]);
yield return new int[] { column1, column2, column3 };
}
}
public class CsvReader : IDisposable
{
private string path;
private string[] currentData;
private StreamReader reader;
public CsvReader(string path)
{
if (!File.Exists(path)) throw new InvalidOperationException("path does not exist");
this.path = path;
Initialize();
}
private void Initialize()
{
FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
reader = new StreamReader(stream);
}
public bool Next()
{
string current = null;
if ((current = reader.ReadLine()) == null) return false;
currentData = current.Split(',');
return true;
}
public string this[int index]
{
get { return currentData[index]; }
}
public void Dispose()
{
reader.Close();
}
}
dati CSV:
10.200.210 20.190.210 30.180.210 40.170.210 50.160.210 60.150.210 70.140.210 80.130.210 90.120.210 100.110.210
Nota: La 3a colonna è una somma delle prime due colonne e questo sarà affermato nel test unitario.
Risultati:
seguito troverete un'alternativa utilizzando oggetti TestCaseData e l'impostazione di un tipo di ritorno (che off-corso è obbligatoria)
[TestCaseSource("GetDataFromCSV2")]
public int TestDataFromCSV2(int num1, int num2)
{
return num1 + num2;
}
private IEnumerable GetDataFromCSV2()
{
CsvReader reader = new CsvReader(path);
while (reader.Next())
{
int column1 = int.Parse(reader[0]);
int column2 = int.Parse(reader[1]);
int column3 = int.Parse(reader[2]);
yield return new TestCaseData(column1, column2).Returns(column3);
}
}
fonte
2014-04-24 11:55:38
Grazie - ho fatto qualche scavo. Nessun plugin di questo tipo esiste. Forse lo farò da solo. Il motivo principale per cui ho chiesto NUnit è perché è l'unico framework di test utilizzato da me, tutto qui. – Nobody
Prova xUnit una prova se renderà la tua vita di test più semplice a questo proposito. È molto simile a NUnit (James Newkirk ha sviluppato entrambi!) E può facilmente vivere accanto a NUnit fino a quando non capisci se vuoi completamente passare o meno.Non suggerirei di avere sia xUnit che NUnit come parte della soluzione in corso perché i corridori sono diversi e non credo che abbiano alcuna possibilità di eseguire gli altri test. –