[单元测试]VS-通过代码添加单元测试提示No classes or namespaces in this assembly
2014-12-15 21:12
465 查看
在Visual Studio 2012中,打算给以下方法添加单元测试,但却出现了提示:No classes or namespaces in this assembly的提示。
原因还是在于对Program这个类的访问权限,默认是internal类型。这时候只能在程序集内访问该类。而创建新的测试项目已经是属于另外一个程序集了,这时候测试项目当然无法查看到待测试项目中的类。因此,需要在需要测试的类前加上public访问修饰符。
又一次被默认访问修饰符耍了,心粗哎。
这里介绍下通过添加单元测试项目完成单元测试的方法,以加深理解。单元测试,浅显的理解就是写一个测试类,在这个测试类中输入测试参数,预期结果。然后在测试类的方法中运行待测试类的方法,看运行结果是否符合预期结果。用户需要输入一系列的测试样例,来完成全面地测试。
一.首先在解决方案中再新建一个单元测试项目,如下图所示,将其命名为UnitTestProject1。
二.新建的方案界面如下,注意[TestClass]和[TestMethod]特性,表明这是测试类。还有程序自动添加了Microsoft.VisualStudio.TestTools.UnitTesting命名空间。
因为我们是要在这个单元测试项目中测试处在UnitTest集合中的项目。因此首先需要添加对这个待测试项目的引用。整个程序界面如下:
三.这时候就是开始编写测试代码的时候了。我们需要在TestMethod()中为我们要验证的方法编写测试程序。单元测试的基本方法是调用被测代码的函数,输入函数的参数值,获取返回结果,然后与预期测试结果进行比较,如果相等则认为测试通过,否则认为测试不通过。在VS里做的单元测试时基于断言的测试。完成这个判断操作的就是断言类,它会比较测试结果和预期结果,然后在运行测试语句时,输出测试结果。整个过程跟平时调用一个类的方法一样。
常见断言类:Assert、CollectionAssert、StringAssert
四.运行单元测试。打开Test Explorer。生成所有测试项目,再单击Test Explorer中的Run。结果如下:
五.用户可以在Test Exporer中查看运行测试的结果。即可知道待测试的代码是否通过测试。并可在测试结果上右键,查看代码覆盖率:
关于代码覆盖率的文章可以查看:/article/4688620.html
namespace UnitTest { class Program { public int Add(int a, int b) { return a + b; } public int Divide(int a, int b) { return a / b; } static void Main(string[] args) { } } }
原因还是在于对Program这个类的访问权限,默认是internal类型。这时候只能在程序集内访问该类。而创建新的测试项目已经是属于另外一个程序集了,这时候测试项目当然无法查看到待测试项目中的类。因此,需要在需要测试的类前加上public访问修饰符。
又一次被默认访问修饰符耍了,心粗哎。
这里介绍下通过添加单元测试项目完成单元测试的方法,以加深理解。单元测试,浅显的理解就是写一个测试类,在这个测试类中输入测试参数,预期结果。然后在测试类的方法中运行待测试类的方法,看运行结果是否符合预期结果。用户需要输入一系列的测试样例,来完成全面地测试。
一.首先在解决方案中再新建一个单元测试项目,如下图所示,将其命名为UnitTestProject1。
二.新建的方案界面如下,注意[TestClass]和[TestMethod]特性,表明这是测试类。还有程序自动添加了Microsoft.VisualStudio.TestTools.UnitTesting命名空间。
因为我们是要在这个单元测试项目中测试处在UnitTest集合中的项目。因此首先需要添加对这个待测试项目的引用。整个程序界面如下:
三.这时候就是开始编写测试代码的时候了。我们需要在TestMethod()中为我们要验证的方法编写测试程序。单元测试的基本方法是调用被测代码的函数,输入函数的参数值,获取返回结果,然后与预期测试结果进行比较,如果相等则认为测试通过,否则认为测试不通过。在VS里做的单元测试时基于断言的测试。完成这个判断操作的就是断言类,它会比较测试结果和预期结果,然后在运行测试语句时,输出测试结果。整个过程跟平时调用一个类的方法一样。
[TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { UnitTest.Program method2test = new Program(); int a = 1; //TODO:根据要求初始化输入参数之一 int b = 3;//TODO:根据要求初始化输入参数之二 int expect = 4;//TODO:根据要求初始化正确的结果 int actual;//用来存储运行后的结果 actual = method2test.Add(a, b); //开始比较结果,基于Assert断言 Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(expect, actual); } }
常见断言类:Assert、CollectionAssert、StringAssert
四.运行单元测试。打开Test Explorer。生成所有测试项目,再单击Test Explorer中的Run。结果如下:
五.用户可以在Test Exporer中查看运行测试的结果。即可知道待测试的代码是否通过测试。并可在测试结果上右键,查看代码覆盖率:
关于代码覆盖率的文章可以查看:/article/4688620.html
相关文章推荐
- sublime text 3+mingw编译代码时错误提示:g++:error:No Such FIle or directory(已解决)
- 如何解决XML文件中的警告提示“No grammar constraints (DTD or XML Schema) referenced in the document.”
- maven中错误提示 No compiler is provided in this environment. Perhaps you are running on a JRE rather than
- Maven报错 解决方案。ERROR: No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id
- VC++编译别人代码提示fatal error C1083: 无法打开包括文件:“afxcontrolbars.h”: No such file or directory
- Apache2.4.6添加虚拟主机提示:NameVirtualHost has no effect and will be removed in the next release /usr/local/apache/conf/extra/httpd-vhosts.conf
- Maven报错 解决方案。ERROR: No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id
- 如何解决XML文件中的警告提示“No grammar constraints (DTD or XML Schema) referenced in the document.” .
- 【Android】提示Note: This element has no attached source and the Javadoc could not be found in the attac
- VS提示This function or variable may be unsafe.
- Eclipse Android项目 为控件添加了Id,但是在Java代码中提示xxx cannot be resolved or is not a field
- 在VS13上编译通过的代码放在12上编译-错误:l __dtoui3 referenced in function _event_debug_map_HT_GROW
- The target assembly contains no service types. You may need to adjust the Code Access Security policy of this assembly." 目标程序集不包含服务类型。可能需要调整此程序集的代码访问安全策略。
- java 提示----This element has no attached source and the Javadoc could not be found in the attached Javadoc
- VS2013提示error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead.
- 如何解决XML文件中的警告提示“No grammar constraints (DTD or XML Schema) referenced in the document.”
- No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in t
- Eclipse Android项目 为控件添加了Id,但是在Java代码中提示xxx cannot be resolved or is not a field
- Eclipse 提示No compiler is provided in this environment. Perhaps you are running on a JRE rather than
- Maven报错 解决方案。ERROR: No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id