UnitTest


using Bll;
using Model;
using Dal;

using NUnit.Framework;
using NUnit.Mocks;
using System.ServiceModel;
using Constant;

namespace OES.Nunit
{
    /// <summary>
    /// This class is used for test use business logic layer.
    /// </summary>
    [TestFixture]
    public class UserNumit
    {
        private DynamicMock mock = null;
        private IUserDal userDal = null;
        private IUserBll userBll = null;
        private User user = null;

        [SetUp]
        public void Initialize()
        {
            user = new User();
            user.UserName = "a1";
            user.Password = "1";
            user.RoleType = "student";
        }
        [Test]
        public void LogOn()
        {
            mock = new DynamicMock(typeof(IUserDal));
            userDal = (IUserDal)mock.MockInstance;
            userBll = new UserBll();
            userBll = new UserBll(userDal);
            mock.ExpectAndReturn("RetrieveUserByUserName", user, user.UserName);
            User getUser = userBll.RetrieveUserByUserName(user.UserName);
            Assert.IsNotNull(getUser, "User is not null");
        }

        [Test]
        public void LogOnException()
        {
            mock = new DynamicMock(typeof(IUserDal));
            userDal = (IUserDal)mock.MockInstance;
            userBll = new UserBll();
            userBll = new UserBll(userDal);

            mock.ExpectAndThrow("RetrieveUserByUserName", new UserException(), user.UserName);
            Assert.Throws<FaultException<MyExceptionContainer>>(
                () => this.userBll.RetrieveUserByUserName(user.UserName)
                );
        }
        [Test]
        public void ChangePassword()
        {
            mock = new DynamicMock(typeof(IUserDal));
            userDal = (IUserDal)mock.MockInstance;
            userBll = new UserBll();
            userBll = new UserBll(userDal);
            string[] str = new string[] { "1", "123" };
            mock.ExpectAndReturn("UpdatePassword", 1, str);
            bool isChangePassword = userBll.UpdatePassword(str[0], str[1]);
            Assert.True(isChangePassword, "Changed password");
        }

        [Test]
        public void ChangePasswordException()
        {
            mock = new DynamicMock(typeof(IUserDal));
            userDal = (IUserDal)mock.MockInstance;
            userBll = new UserBll();
            userBll = new UserBll(userDal);
            string[] str = new string[] { "1", "123" };

            mock.ExpectAndThrow("UpdatePassword", new UserException(), str);
            Assert.Throws<FaultException<MyExceptionContainer>>(
                () => this.userBll.UpdatePassword(str[0],str[1])
                );
        }

        [TestFixtureTearDown]
        ~UserNumit()
        {
            userBll = null;
            user = null;
            userDal = null;
        }
    }
}
原文地址:https://www.cnblogs.com/chenyongblog/p/3819146.html