Корректность модульного(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))
};
}