私には方法があります:
public static int Add(List<int> numbers)
{
if (numbers == null || numbers.Count == 0)
return 0;
if (numbers.Count == 1)
return numbers[0];
throw new NotImplementedException();
}
ここに私のテストがありますが、new List<int> {1}
TestCase内:
[TestCase(new List<int>{1}, 1)]
public void Add_WithOneNumber_ReturnsNumber(List<int> numbers)
{
var result = CalculatorLibrary.CalculatorFunctions.Add(numbers);
Assert.AreEqual(1, result);
}
それは私にエラーを与えます:
An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type
このようにする必要がありますか?
[Test]
public void Add_WithOneNumber_ReturnsNumber()
{
var result = CalculatorLibrary.CalculatorFunctions.Add(new List<int>{7});
Assert.AreEqual(7, result);
var result2 = CalculatorLibrary.CalculatorFunctions.Add(new List<int> {3});
Assert.AreEqual(4,result2);
}
TestCaseSource属性を使用するオプションが1つあります。ここでは、動作を確認するために、2つのケースで非アサートテストを提供します。
[TestFixture]
public class TestClass
{
private object[] _sourceLists = {new object[] {new List<int> {1}}, //case 1
new object[] {new List<int> {1, 2}} //case 2
};
[Test, TestCaseSource("_sourceLists")]
public void Test(List<int> list)
{
foreach (var item in list)
Console.WriteLine(item);
}
}
とにかく私はそれが最も明白な解決策ではないことを言及しなければなりません、そして私はそれらがより冗長であるという事実を無視してきちんと組織された備品を好むでしょう
私の解決策は単純です。params
を使用します。これがあなたの役に立つことを願っています!
[TestCase(1, 1)]
[TestCase(10, 5, 1, 4)]
[TestCase(25, 3, 5, 5, 12)]
public void Linq_Add_ShouldSumAllTheNumbers(int expected, params int[] numbers)
{
var result = CalculatorLibrary.CalculatorFunctions.Add(numbers);
Assert.AreEqual(expected, result);
}
@Yurii Hohanの回答のコードを改善します。
private static readonly object[] _Data =
{
new object[] {new List<int> {0}, "test"},
new object[] {new List<int> {0, 5}, "test this"},
};
[Test, TestCaseSource(nameof(_Data))]
この助けを願っています。
これを使用できます:
[TestCase(new [] {1,2,3})]
public void Add_WithOneNumber_ReturnsNumber(int [] numbers)
パラメータ_new [] {1}
_として配列を使用し、テストメソッドresult.ToList()
内のListに変換します。これには_using System.Linq;
_が必要です。
_[TestCase(new [] {1}, 1)]
[TestCase(new [] {2}, 2)]
[TestCase(new [] {1000}, 1000)]
public void Add_WithOneNumber_ReturnsNumber(int[] numbers)
{
var result = CalculatorLibrary.CalculatorFunctions.Add(numbers);
Assert.AreEqual(1, result.ToList());
}
_