zoukankan      html  css  js  c++  java
  • [单元测试]VS-通过代码添加单元测试提示No classes or namespaces in this assembly

      在Visual Studio 2012中,打算给以下方法添加单元测试,但却出现了提示:No classes or namespaces in this assembly的提示。

     1 namespace UnitTest
     2 {
     3      class Program
     4     {
     5         public int Add(int a, int b)
     6         {
     7             return a + b;
     8         }
     9         public int Divide(int a, int b)
    10         {
    11             return a / b;
    12         }
    13         static void Main(string[] args)
    14         {
    15         }
    16     }
    17 }

      原因还是在于对Program这个类的访问权限,默认是internal类型。这时候只能在程序集内访问该类。而创建新的测试项目已经是属于另外一个程序集了,这时候测试项目当然无法查看到待测试项目中的类。因此,需要在需要测试的类前加上public访问修饰符。

      又一次被默认访问修饰符耍了,心粗哎。

      这里介绍下通过添加单元测试项目完成单元测试的方法,以加深理解。单元测试,浅显的理解就是写一个测试类,在这个测试类中输入测试参数,预期结果。然后在测试类的方法中运行待测试类的方法,看运行结果是否符合预期结果。用户需要输入一系列的测试样例,来完成全面地测试。

      一.首先在解决方案中再新建一个单元测试项目,如下图所示,将其命名为UnitTestProject1。

      

      二.新建的方案界面如下,注意[TestClass]和[TestMethod]特性,表明这是测试类。还有程序自动添加了Microsoft.VisualStudio.TestTools.UnitTesting命名空间。

       因为我们是要在这个单元测试项目中测试处在UnitTest集合中的项目。因此首先需要添加对这个待测试项目的引用。整个程序界面如下:

     

      

      三.这时候就是开始编写测试代码的时候了。我们需要在TestMethod()中为我们要验证的方法编写测试程序。单元测试的基本方法是调用被测代码的函数,输入函数的参数值,获取返回结果,然后与预期测试结果进行比较,如果相等则认为测试通过,否则认为测试不通过。在VS里做的单元测试时基于断言的测试。完成这个判断操作的就是断言类,它会比较测试结果和预期结果,然后在运行测试语句时,输出测试结果。整个过程跟平时调用一个类的方法一样。

     1     [TestClass]
     2     public class UnitTest1
     3     {
     4         [TestMethod]
     5         public void TestMethod1()
     6         {
     7             UnitTest.Program method2test = new Program();
     8             int a = 1; //TODO:根据要求初始化输入参数之一
     9             int b = 3;//TODO:根据要求初始化输入参数之二
    10             int expect = 4;//TODO:根据要求初始化正确的结果
    11             int actual;//用来存储运行后的结果
    12             actual = method2test.Add(a, b);
    13             //开始比较结果,基于Assert断言
    14             Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(expect, actual);
    15         }
    16     }

      

      常见断言类:Assert、CollectionAssert、StringAssert

      四.运行单元测试。打开Test Explorer。生成所有测试项目,再单击Test Explorer中的Run。结果如下:

      五.用户可以在Test Exporer中查看运行测试的结果。即可知道待测试的代码是否通过测试。并可在测试结果上右键,查看代码覆盖率:

      

      

      关于代码覆盖率的文章可以查看:http://www.cnblogs.com/coderzh/archive/2009/03/29/1424344.html

  • 相关阅读:
    自定义View的ToolBar布局报错Error:(2) No resource identifier found for attribute 'context' in package 'c
    在学git之主分支 branch
    获取发布版SHA1
    关于开启线程与UI的操作
    播放音频和视频(VideoView控件)
    通知栏Notification的应用
    Android 真机调式 Installation failed with message 远程主机强迫关闭了一个现有的连接。. It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing. WA
    运行程序申请危险权限
    mysql乐观锁总结和实践
    Nginx配置文件nginx.conf中文详解
  • 原文地址:https://www.cnblogs.com/lsr-flying/p/4165887.html
Copyright © 2011-2022 走看看