单元测试

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

但测试驱动,如雷贯耳,所谓未写代码,先写测试;博客园又有大神说,所谓的需求分析,应当具体化为测试用例。。。反正,单元测试就是好重要!
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);
        }
    }
}

这里写图片描述

原文地址:https://www.cnblogs.com/leftfist/p/6808762.html