c# - 数据驱动测试消除空白

标签 c# xml unit-testing mstest data-driven-tests

我正在编写一个单元测试来测试以下方法。

public void MyMethod(string parm1)
{
    // Validate parm1.
    string[] invalidTokens = new string[] { "/", "{", "}", ".", "--", ";", " ", ",", "=", "(", ")", "\"", "'", "?" };
    foreach (string token in invalidTableTokens)
    {
        if (parm1.Contains(token))
            throw new ArgumentException("Parameter cannot contain \"" + token + "\".");
    }

    // No invalid characters so continue processing...
}

单元测试应验证传递包含无效字符的字符串是否会导致异常。我希望我的单元测试是使用 XML(或 CSV)数据源进行数据驱动的。

[TestMethod()]
[DeploymentItem("\\path\my_data.xml")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\my_data.xml", "Token", DataAccessMethod.Sequential)]
public void MyMethod_Parm1ContainsInvalidCharacters_ThowsException()
{
    // Arrange
    string invalidToken = TestContext.DataRow["Token_Text"].ToString();
    MyClass sut = new MyClass ();

    // Act
    string errorMessage = "";
    try
    {
        sut.MyMethod(invalidToken);
    }
    catch (ArgumentException ex)
    {
        errorMessage = ex.Message;
    }

    // Assert
    Assert.AreEqual(errorMessage, "Parameter cannot contain \"" + invalidToken + "\".");
}

除非测试需要传递单个空格字符“”,否则这种方法有效。不幸的是,当我需要将 Token_Text 的值作为空格时,它的值始终为“”。

<?xml version="1.0" encoding="utf-8" ?>
<InvalidTokens>
  <Token>/</Token>
  <Token>{</Token>
  <Token>}</Token>
  <Token>.</Token>
  <Token>--</Token>
  <Token>;</Token>
  <Token> </Token> <!-- Fails here-->
  <Token Token_Text=" "/> <!-- Also fail here -->
  <Token>,</Token>
  <Token>=</Token>
  <Token>(</Token>
  <Token>)</Token>
  <Token>"</Token>
  <Token>'</Token>
  <Token>?</Token>
</InvalidTokens>

我还使用以下 CSV 文件尝试过此操作并得到相同的结果。

Token
"/"
"{"
"}"
"."
"--"
";"
" " <-- Fails  here
","
"="
"("
")"
""""
"'"
"?"

如何表示在数据驱动单元测试中使用的单个空格字符?

最佳答案

我能够使用特殊字符十进制编码来表示空格。

<Token>&#032;</Token>

关于c# - 数据驱动测试消除空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15748883/

相关文章:

java - 如何在 JAVA 中(以 XQJ 或任何其他方式)使用 Xquery 3.1(新功能,如映射和数组)?

java - 用于 Windows 上单元测试的嵌入式 FTP 服务器 : FileUpload 551 error

java - androidx.test.espresso.NoMatchingRootException : Matcher 'is toast' did not match any of the following roots:

C# 对 WPF 应用程序进行屏幕截图

c# - 正则表达式 - 仅匹配一定长度或更短的通配符

c# - .NET Web API 异常错误详细信息

Java XML 转换接口(interface)

c# - ASP.NET 中的 XML POST 和解析

c# - 搜索值库时如何使用OR输出结果?

java - 对调用多个私有(private)方法的公共(public)方法进行单元测试