Корректность модульного(MS Test, C#) теста

Подскажите где косяки в тестирующем методе.

[DataTestMethod]
[DynamicData(nameof(GetFigures), DynamicDataSourceType.Method)]
public void TestFigures(Shape shape)
{

    // .txt файл содержит фигуры с такими же характеристиками, как и в GetFigures()
    List<Shape> shapes = reader.ReadDataFromCSVFile(figuresFileDir);
    Assert.AreNotEqual(null, shapes);

    // Нужно найти в shapes все фигуры, равные shape
    // Equals перегружен сравнением площадей
    List<Shape> equalShapes = new List<Shape>();
    equalShapes.Add(shapes.FirstOrDefault(s => s.Equals(shape)));
    Assert.AreNotEqual(null, equalShapes);
}

private static IEnumerable<Shape[]> GetFigures()
{
    yield return new Rectangle[] { new Rectangle("Rectangle", (8, 19), (16, 34), (46, 16), (38, 2)) };
    yield return new Triangle[] { new Triangle("Triangle", (15, 15), (47, 40), (65, 20)) };
    yield return new Square[] { new Square("Square", (6, 3), (6, 27), (30, 27), (30, 3)) };
}

Ответы (1 шт):

Автор решения: The Konstantin

По понятным(уже) причинам, исправил тесты на следующий вид

private readonly FileReader reader = new FileReader();
private readonly string figuresFilePath = Path.Combine(Directory.GetParent(Environment.CurrentDirectory).Parent.FullName, "Resources", "Figures.txt");

[TestMethod]
public void ReadingCSVDataFromTextFile_ArgumentNullException()
{
    Assert.ThrowsException<ArgumentNullException>(() => reader.ReadingCSVDataFromTextFile(null));
}

[DataTestMethod]
[DataRow("")]
[DataRow("NonexistentPath")]
public void ReadingCSVDataFromTextFile_Exception(string pathToFile)
{
    Assert.ThrowsException<Exception>(() => reader.ReadingCSVDataFromTextFile(pathToFile));
}

[TestMethod]
public void ReadingCSVDataFromTextFile_PositiveTestResult()
{
    Assert.AreNotEqual(null, reader.ReadingCSVDataFromTextFile(figuresFilePath));
}

[TestMethod]
public void ParseCSVDataFromFile_PositiveTestResult() 
{
    Assert.AreNotEqual(null, reader.ReadingCSVDataFromTextFile(figuresFilePath));
    Assert.AreNotEqual(null, MyParser.ParseCSVDataFromFile(reader.ReadingCSVDataFromTextFile(figuresFilePath)));
}

[DataTestMethod]
[DynamicData(nameof(GetFigures), DynamicDataSourceType.Method)]
public void FindEqualShapes_PositiveTestResult(params Polygon[] shapes) 
{
    Assert.AreNotEqual(null, reader.ReadingCSVDataFromTextFile(figuresFilePath));

    List<Polygon> shapesFromFile = MyParser.ParseCSVDataFromFile(reader.ReadingCSVDataFromTextFile(figuresFilePath));
    Assert.AreNotEqual(null, shapesFromFile);

    List<Polygon> eqaulShapes = (from Polygon shape in shapes
                                    where shapesFromFile.Any(s => s.Equals(shape))
                                    select shapesFromFile.FirstOrDefault(s => s.Equals(shape))).ToList();
    Assert.IsTrue(eqaulShapes.Count != 0);
}

private static IEnumerable<Polygon[]> GetFigures()
{
    yield return new Rectangle[] {
        new Rectangle("Rectangle1", (8, 19), (16, 34), (46, 16), (38, 2)),
        new Rectangle("Rectangle2", (10, 20), (14, 38), (60, 19), (39, 4)),
        new Rectangle("Rectangle3", (11, 22), (15, 31), (51, 22), (30, 7))
    };
    yield return new Triangle[] {
        new Triangle("Triangle1", (15, 15), (47, 40), (65, 20)),
        new Triangle("Triangle2", (14, 17), (41, 52), (61, 19))
    };
    yield return new Square[] {
        new Square("Square", (6, 3), (6, 27), (30, 27), (30, 3)),
        new Square("Square", (7, 2), (5, 30), (31, 27), (30, 3))
    };
}
→ Ссылка