Mi-am analizat codul pe care l-am scris intr-un proiect de test.
Vroiam sa citesc niste date de test pe un fisier CSV si sa le trimit ca parametrii la test.
Aveam clasa de baza
public class CSVReaderClassData : IEnumerable<object[]> { private readonly List<object[]> _data = new List<object[]>(); public CSVReaderClassData(string fileName) { var contents = File.ReadLines(fileName); //skip 1 - the header contents.Skip(1).ToList().ForEach(it => _data.Add(it.Split(','))); } public IEnumerator<object[]> GetEnumerator() { return _data.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }
si apoi alte vreo patru clase derivate( arat doar doua)
class RoboCopyCSV: CSVReaderClassData { public RoboCopyCSV(): base("RoboCopyCSV.txt") { } }
class XCopyCSV: CSVReaderClassData { public XCopyCSV(): base("XCopyCSV.txt") { } }
Nu intelegeam de ce am facut asa – pina cind am descoperit
[Theory] [ClassData(typeof(RoboCopyCSV))] public void TestTimeRoboCopy(string dest, string source, string threadsNumber){ } [Theory] [ClassData(typeof(XCopyCSV))] public void TestTimeXCopy(string dest, string source){ }
Fie faceam asa , fie faceam cu
[PropertyData(nameof(RoboCopyTestData))]
unde RoboCopyTestData era o functie statica care intorcea IEnumerable
Nu stiu de ce, dar intre functii statice si clase …. parca prefer clase ( asta poate insemna ca am depasit programarea modulara. Sa vad cind trec la cea functionala)