Ser*_*ern 15 arrays xunit xunit.net
我想将一个字符串数组传递给我的一个XUnit测试方法,但是当我执行以下操作时它不起作用(array + params机制)
[Theory]
[InlineData(new object[] { "2000-01-02", "2000-02-01" })]
public void TestSynchronizeMissionStaffing_PeriodNoMatch(string[] dateStrings)
Run Code Online (Sandbox Code Playgroud)
我可以解决这个问题:
[Theory]
[InlineData(0, new object[] { "2000-01-02", "2000-02-01" })]
public void TestSynchronizeMissionStaffing_PeriodNoMatch(int dummy, string[] dateStrings)
Run Code Online (Sandbox Code Playgroud)
但我希望有更好的方法来解决这个问题.
你能告诉我吗?
yai*_*air 23
params在方法的string[]参数之前使用,然后你不需要初始化string[]in InlineData属性,而是可以使用可变数量的string文字,编译器不会抱怨它:
[Theory]
[InlineData("2000-01-02", "2000-02-01")]
public void TestSynchronizeMissionStaffing_PeriodNoMatch(params string[] dateStrings)
Run Code Online (Sandbox Code Playgroud)
Hoc*_*eyJ 21
为了搜索者的利益 - 在 2020 年,这在没有params或object铸造的情况下是可能的。
让它发挥良好作用的关键似乎是在编写InlineData部分之前编写方法签名。这是一些工作代码:
[Theory]
[InlineData(true, "expected", new string[] { "expected", "another" })]
[InlineData(false, "nope!", new string[] { "expected", "another" })]
public async void StringCheck_WithInputs_ExpectResultsMatch(bool expectedResult, string expectedString, string[] possibleStrings)
{
bool actualResult = false;
foreach(var row in possibleStrings)
{
if(row == expectedString)
{
actualResult = true;
}
}
Assert.Equal(expectedResult, actualResult);
}
Run Code Online (Sandbox Code Playgroud)
小智 8
这应该有效
[Theory]
[InlineData(new object[] { new string[] { "2000-01-02", "2000-02-01" } })]
public void TestSynchronizeMissionStaffing_PeriodNoMatch(string[] dateStrings)
Run Code Online (Sandbox Code Playgroud)
当您像初始化对象数组一样,它上面的所有元素都是单个对象,因此当您尝试将字符串数组作为参数传递时,它会传递对象数组的第一个元素,即“2000-01-02”。
| 归档时间: |
|
| 查看次数: |
10770 次 |
| 最近记录: |