是否可以创建NUnit Test方法来检查方法是否返回预期的数据类型?
这就是我的意思:
我有一个静态字符串,它接受两个参数并检查它是否与另一个字符串匹配。如果是,方法只返回该字符串。
我想测试以确保此方法确实返回字符串类型以及可能发生的任何异常。
示例代码:
View
以下是我的解决方案的展示方式:
我想在public static string GetXmlAttributeValue(this XmlElement element, string attributeName)
{
if (element == null)
{
throw new ArgumentNullException("element");
}
if (attributeName == null)
{
throw new ArgumentNullException("attributeName");
}
string attributeValue = string.Empty;
if (element.HasAttribute(attributeName))
attributeValue = element.Attributes[attributeName].Value;
else
throw new XmlException(element.LocalName + " does not have an attribute called " + attributeName);
return attributeValue;
}
类库中编写测试代码。
答案 0 :(得分:9)
通常,不需要测试返回类型。 C#是静态类型语言,因此该方法不能返回与string不同的其他内容。
但是如果你想编写一个测试,如果有人更改了返回类型,测试会失败,你可以这样做:
Assert.That(result, Is.TypeOf<string>());
答案 1 :(得分:2)
要测试返回类型,您可以使用@ dimitar-tsonev提到的function Initialize() {
var self = this;
this.jqueryCDN = "https://code.jquery.com/jquery-1.11.3.min.js"
if (!this.checkJQuery()) {
console.log("jquery not available")
this.loadJQuery();
setTimeout(function() {
if (!self.checkJQuery()) {
throw "Error loading jquery"
} else {
alert("jQuery loaded!");
}
}, 2500);
} else {
console.log("jquery available")
}
}
Initialize.prototype.checkJQuery = function() {
if (window.jQuery) {
return true;
} else {
return false;
}
};
Initialize.prototype.loadJQuery = function() {
// var js_code = atob(this.jqueryStr);
// eval(js_code);
this.loadScript(this.jqueryCDN);
};
Initialize.prototype.loadScript = function(src) {
var my_awesome_script = document.createElement('script');
my_awesome_script.setAttribute('src', src);
document.body.appendChild(my_awesome_script);
}
var i = new Initialize();
语法。 Here is a list支持的类型约束:
您还提到要编写测试以验证异常。为此,您可以将Is.TypeOf<yourType>
属性用作documented here,也可以将异常断言语法用作documented here。
答案 2 :(得分:-2)
您不需要测试返回某种数据类型的方法,因为它只能返回特定的返回类型。您可以运行该方法并使用Assert来检查它是否为null,然后您知道该方法返回了正确的类型。
var result = GetXmlAttributeValue(par1,par2);
Assert.isNotNull(result);
希望这有帮助!