我没有完全掌握单元测试的概念,它让我对如何以最有效的方式实际解决问题感到困惑。
例如:
void function(){
if(!object == null){
//do something
}
else{
throw anyexception
}
}
是单元测试吗?
derived class/Test class : baseclass
derived_class = new baseclass();
Test_class = new baseclass();
Test_class.Sum();
我是否在单元测试中正确理解它,如果你使类可继承并创建一个测试类来测试所需基类中的每个组件?
动态调试是不够的,只需单击调试按钮,Visual Studio就会处理并发现所有课程中的所有问题
答案 0 :(得分:-1)
单元测试意味着根据预定义的输入检查代码的特定部分,以确保您的代码正确无误。一个简单的例子:如果你有这样一个功能:
int power(int x, unsigned int n)
{
int res = x;
while(n > 1) {
res *= x;
n--;
}
return res;
}
这种功能的单元测试如下所示:
void test_power()
{
if(power(5, 2) != 25)
throw BugDetected{};
if(power(5, 0) != 1)
throw BugDetected{};
}
可以以类似的方式测试类。
(当然大型代码库使用框架进行单元测试,这意味着上面的测试看起来可能略有不同 - 这也是一个简单的例子,可以帮助您理解单元测试是什么。我怀疑你的派生类的例子可能会来来自这样一个框架。)
编写代码并不是绝对必要的单元测试,然而,许多人会争辩说,如果没有全面的单元测试,你永远无法确定你的代码是否正确。 (请参阅上面的示例:函数power
有一个错误,将通过此单元测试检测到。)
你问:
动态调试不够用,只需单击调试按钮,Visual Studio就会处理并发现所有类中的所有问题
对于小块代码,但是,当你的代码非常大时,可以通过这种方式测试所有代码并运气好发现所有可能的极端情况。根据功能的使用方式,调试器可能甚至不会发现有问题:只有您的代码有时会输出错误的结果。
答案 1 :(得分:-1)
这个概念很简单,这意味着您需要有一种测试方法来测试您的“生活”。方法。今天有一个所谓的 T est D 撕裂 D 发展(TDD),你需要首先开发测试,然后你的'生活'方法。这看起来似乎很愚蠢,但这就是概念。当您的生活时,这种测试方法会起什么作用?方法不存在。那么测试就会失败。然后你的下一步就是创建“直播”。方法然后你的测试将通过。你可以使用NUnit框架在visual studio项目中创建单元测试。
前'直播'方法
-DLLVM_ENABLE_RTTI=ON
我们有类Math,我们需要设计方法Sum,它接受两个参数来计算它们的总和。测试方法应包含描述性名称您正在测试什么。您在测试方法上方添加[TestMethod()]属性。您实例化Math类的对象并调用Sum方法将结果存储在methodResult变量中。使用预期结果值实例化expectedResult变量,然后调用Assert.AreEqual(expectedResult,methodResult),它是NUnit框架中的嵌入式测试工具,用于比较这两个值。我们可以说测试通过'如果预期和方法结果相等,则使用绿色标记,否则会失败并变为红色。