• 单元测试


    某从未搞过单元测试,觉得好神秘!

    但测试驱动,如雷贯耳,所谓未写代码,先写测试;博客园又有大神说,所谓的需求分析,应当具体化为测试用例。。。反正,单元测试就是好重要!
    http://www.cnblogs.com/freeflying/p/4846618.html
    http://www.cnblogs.com/freeflying/p/4810647.html

    所以一直都想搞一搞。但网上的文章我看不大明白,这两天抓住难得的机会摸索了一下,好像有点眉目了。先记录一下,日后在此基础上再出发。

    什么是单元测试?我感觉单元测试就是自动化测试。写一些相关的方法,来调用我们需要测试的方法,跑一遍。测试项目为此提供了便利。

    比方说,我想对业务逻辑层的一些方法进行单元测试。首先在VS中右击该方法,选单元测试,建立单元测试项目。系统自动搭建了框架,完成了许多支撑代码。

    不过,如何调用目标方法来进行测试,还需要我们自己完成。同时,令我诧异的是,调用目标方法所需要的一些动态库,也要我们自己手动添加!

    单元测试的主要方法是Assert(断言)。比如,Assert.AreEqual(期望值,实际运行值)。如果两个值相符,则显示测试通过;否则红灯。

    单元测试可以选定进行测试,也可以全部跑一遍。

    还可以调试!方法是选VS菜单栏中的 测试 - 调试,方便得很。

    有代码有机八:

    namespace Services.User.Tests
    {
        [TestClass()]
        public class UserHomeMadeServiceTests
        {
            readonly string connString = "。。。。。";
            ISessionFactory sessionFactory;
            ISession session;
            IUserHomeMadeService service;
    
            [TestInitialize()]//测试环境初始化
            public void Init()
            {
                sessionFactory = Fluently.Configure()
                    .Database(FluentNHibernate.Cfg.Db.OracleClientConfiguration.Oracle10.
                        ConnectionString(connString).ShowSql())
                    .ExposeConfiguration(f => f.SetInterceptor(new SqlStatementInterceptor()))
                    .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.Load("这是一个数据库持久层代码文件名称")))
                    .BuildSessionFactory();
    
                session = sessionFactory.OpenSession();
    
                service = new UserHomeMadeService(new UserHomeMadeRepository(session));
            }
    
            [TestCleanup()]//测试完毕大扫除
            public void Cleanup()
            {
                session.Disconnect();
                session.Dispose();
            }
    
            [TestMethod()]//测试方法
            public void SetModelTest()
            {
                ITransaction transaction = session.BeginTransaction(IsolationLevel.ReadCommitted);
    
                UserHomeMade hm = new UserHomeMade();
                hm.USER_ID = 1;
                hm.HOME_MADE = System.Text.Encoding.GetEncoding("GB2312").GetBytes("大便干小便黄");
                hm.CREATE_DATE = DateTime.Now;
                hm.EDIT_DATE = DateTime.Now;
                Assert.AreEqual(true, service.SetModel(hm));
    
                transaction.Rollback();
            }
    
            [TestMethod()]
            public void GetModelTest()
            {
                UserHomeMade hm = service.GetModel(1);
                string homemade = System.Text.Encoding.GetEncoding("GB2312").GetString(hm.HOME_MADE);
                Assert.AreEqual("大便干小便黄", homemade);
            }
        }
    }

    这里写图片描述

  • 相关阅读:
    JavaScript学习
    jenkins 的 ProcessTreeKiller----无法启动子进程的解决办法
    Zend studio 10.6 配置XDEBUG
    建立php开发环境(XAMPP + Xdebug+Zend Studio)
    [转]linux(centos)搭建SVN服务器
    【转】单身是最好的增值时期
    Hadoop核心组件
    数据节点中数据库的存储
    HDFS
    CSS:IE,Chrome,Firefox兼容性和CSS Hack(转载)
  • 原文地址:https://www.cnblogs.com/leftfist/p/6808762.html
Copyright © 2020-2023  润新知