![](/img/trans.png)
[英]Why does a link is clicked when test is run in Selenium IDE, but it is not clicked when the test is run by nunit.exe?
[英]Why does nunit not run a test which contains control/special chars
如果我有一個測試 class 之類的
public class Tests
{
[TestCaseSource(nameof(TestSource))]
public void Test(string c)
{
Assert.Pass();
}
public static IEnumerable<object> TestSource()
{
for (char c = '\0'; c < 255; c++)
{
yield return c.ToString();
}
}
}
然后 Visual Studio 中的測試運行程序可以發現所有測試,但不會運行所有測試。
這些是未運行的 ascii 字符范圍:
U_0001 - U_0006
U_000E - U_001F
U_007F - U_0084
U_0086 - U_009F
我們目前使用其中一些字符,例如U_0002
進行網絡工作相關測試,這些字符包含在測試中,但目前不運行
這是用於測試運行的 output
---------- Starting test discovery for requested test run ----------
NUnit Adapter 3.17.0.0: Test discovery starting
NUnit Adapter 3.17.0.0: Test discovery complete
========== Test discovery finished: 255 Tests found in 4,8 sec ==========
---------- Starting test run ----------
NUnit Adapter 3.17.0.0: Test execution started
Running selected tests in C:\Users\WEIK014\source\repos\TestSourceTestProject\TestSourceTestProject\bin\Debug\netcoreapp2.1\TestSourceTestProject.dll
NUnit3TestExecutor discovered 199 of 199 NUnit test cases
NUnit Adapter 3.17.0.0: Test execution complete
========== Test run finished: 199 Tests run in 8,6 sec (199 Passed, 0 Failed, 0 Skipped) ==========
如您所見,它甚至不承認它跳過了測試。
項目中的版本:
好吧,這聽起來可能是 Visual Studio 或測試適配器中某處顯示 Unicode 控制字符的錯誤。 作為一種解決方法,您可以覆蓋控制字符的測試顯示名稱:
public static IEnumerable<TestCaseData> TestSource()
{
for (char c = '\0'; c < 255; c++)
{
var data = new TestCaseData(c.ToString());
if (char.IsControl(c))
{
data.SetArgDisplayNames($"{(int)c:X4}");
}
yield return data;
}
}
這將保留可打印字符的顯示(例如Test("a")
),控制字符將顯示為Test(0001)
等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.