我如何在c#中对单元测试的URL有效?

时间:2017-02-13 15:23:20

标签: c# unit-testing

我有一个类,使用以下方法检查URL是否有效:

return !string.IsNullOrEmpty(url) && 
        Uri.TryCreate(url, UriKind.Absolute, out uriResult) && 
        (uriResult.Scheme == Uri.UriSchemeHttp || 
        uriResult.Scheme == Uri.UriSchemeHttps);

我想知道如何对代码进行单元测试,以检查网址是否有效。

到目前为止,我的单元测试仅部分涵盖了下面的单元测试。

string url = "newUrl";
var result = UrlUtility.IsValid(url);
Assert.IsFalse(result);

非常感谢任何帮助。感谢

2 个答案:

答案 0 :(得分:3)

您应该涵盖IsValid()方法的所有条件:

[TestMethod]
public void TestEmptyUrl()
{
    string url = "";

    Assert.IsFalse(UrlUtility.IsValid(url));
}

[TestMethod]
public void TestInvalidUrl()
{
    string url = "bad url";

    Assert.IsFalse(UrlUtility.IsValid(url));
}

[TestMethod]
public void TestRelativeUrl()
{
    string url = "/api/Test";

    Assert.IsFalse(UrlUtility.IsValid(url));
}

[TestMethod]
public void TestUrlWithInvalidScheme()
{
    string url = "htt://localhost:4000/api/Test";

    Assert.IsFalse(UrlUtility.IsValid(url));
}

[TestMethod]
public void TestUrlWithHttpScheme()
{
    string url = "http://localhost:4000/api/Test";

    Assert.IsTrue(UrlUtility.IsValid(url));
}

[TestMethod]
public void TestUrlWithHttpsScheme()
{
    string url = "https://localhost:4000/api/Test";

    Assert.IsTrue(UrlUtility.IsValid(url));
}

答案 1 :(得分:0)

您可以为网址提供一些值。例如,您可以测试下一个案例:

string url = string.Empty;
var result = UrlUtility.IsValid(url);
Assert.IsFalse(result);

此外,您可以在互联网上阅读有关 Uri.UriSchemeHttp Uri.UriSchemeHttps 的信息,并尝试进行一些测试以尊重或忽略此uri方案。 希望它有所帮助!