Я прочитал эту статью о лучших практиках модульных тестов, но я до сих пор ничего не понимаю. Если у меня есть List<T>
или другая коллекция, а затем для добавления / удаления элементов используется метод .Add
или .Remove
, считается ли он аранжировкой или актом ?
Например, это определенно считается упорядочить :
List<decimal> values = new List<decimal>
{
0.01668m,
0.01666m
};
Рассмотрим следующие примеры:
public class IndicatorTests
{
[Fact]
public void SimpleMovingAverage_MultipleCloseValues_ReturnsSMA()
{
// Arrange
SimpleMovingAverage sma = new SimpleMovingAverage(5);
// Act
sma.Add(0.01692m);
sma.Add(0.01685m);
sma.Add(0.01686m);
sma.AddRange(new List<decimal>
{
0.01668m,
0.01666m
});
decimal actual = sma.GetResult();
// Assert
Assert.Equal(0.016794m, actual);
}
[Fact]
public void SimpleMovingAverageBuilder_MultipleCloseValues_ReturnsSMA()
{
// Arrange
SimpleMovingAverage sma = new SimpleMovingAverageBuilder(5)
.Add(0.01692m)
.Add(0.01685m)
.Add(0.01686m)
.Add(0.01668m)
.Add(0.01666m)
.Build();
// Act
decimal actual = sma.GetResult();
// Assert
Assert.Equal(0.016794m, actual);
}
}
Я считаю, что второй тест в порядке условность-накрест. А как насчет первого?
Должен ли я сделать это так:
[Fact]
public void SimpleMovingAverage_MultipleCloseValues_ReturnsSMA()
{
// Arrange
SimpleMovingAverage sma = new SimpleMovingAverage(5);
List<decimal> values = new List<decimal>
{
0.01668m,
0.01666m
};
// Act
sma.Add(0.01692m);
sma.Add(0.01685m);
sma.Add(0.01686m);
sma.AddRange(values);
decimal actual = sma.GetResult();
// Assert
Assert.Equal(0.016794m, actual);
}
Или так:
[Fact]
public void SimpleMovingAverage_MultipleCloseValues_ReturnsSMA()
{
// Arrange
SimpleMovingAverage sma = new SimpleMovingAverage(5);
List<decimal> values = new List<decimal>
{
0.01668m,
0.01666m
};
sma.Add(0.01692m);
sma.Add(0.01685m);
sma.Add(0.01686m);
sma.AddRange(values);
// Act
decimal actual = sma.GetResult();
// Assert
Assert.Equal(0.016794m, actual);
}
Какой из них лучше? Пожалуйста, опишите ваш ответ.