테스트를 위한 샘플 코드Sample code for testing

이 샘플 코드에는 단위 테스트를 통해 테스트할 수 있는 BankAccount 클래스가 포함되어 있습니다.This sample code contains a class, BankAccount, with various methods that can be tested through unit tests.

이 코드는 다음 연습에서 사용됩니다.The code is used in the following walkthroughs:

샘플 코드Sample code

이 샘플에서 의도적으로 발생시켜야 하는 오류는 Debit 메서드 "m_balance += amount"의 등호 앞에 더하기 기호가 아닌 빼기 기호가 있어야 한다는 것뿐입니다.The only intentional error in this sample is that the in Debit method "m_balance += amount" should have a minus not a plus sign before the equals sign.

using System;

namespace BankAccountNS
{
    /// <summary>
    /// Bank Account demo class.
    /// </summary>
    public class BankAccount
    {
        private string m_customerName;

        private double m_balance;

        private bool m_frozen = false;

        private BankAccount()
        {
        }

        public BankAccount(string customerName, double balance)
        {
            m_customerName = customerName;
            m_balance = balance;
        }

        public string CustomerName
        {
            get { return m_customerName; }
        }

        public double Balance
        {
            get { return m_balance; }
        }

        public void Debit(double amount)
        {
            if (m_frozen)
            {
                throw new Exception("Account frozen");
            }

            if (amount > m_balance)
            {
                throw new ArgumentOutOfRangeException("amount");
            }

            if (amount < 0)
            {
                throw new ArgumentOutOfRangeException("amount");
            }

            m_balance += amount; // intentionally incorrect code
        }

        public void Credit(double amount)
        {
            if (m_frozen)
            {
                throw new Exception("Account frozen");
            }

            if (amount < 0)
            {
                throw new ArgumentOutOfRangeException("amount");
            }

            m_balance += amount;
        }

        private void FreezeAccount()
        {
            m_frozen = true;
        }

        private void UnfreezeAccount()
        {
            m_frozen = false;
        }

        public static void Main()
        {
            BankAccount ba = new BankAccount("Mr. Bryan Walton", 11.99);

            ba.Credit(5.77);
            ba.Debit(11.22);
            Console.WriteLine("Current balance is ${0}", ba.Balance);
        }
    }
}

/* 이 문서에 사용된 예제 회사, 조직, 제품, 도메인 이름, 전자 메일 주소, 로고, 사람, 장소 및 이벤트는 실제 데이터가 아닙니다./* The example companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted herein are fictitious. 어떠한 실제 회사, 기관, 제품, 도메인 이름, 전자 메일 주소, 로고, 사람, 장소 또는 이벤트와도 연관시킬 의도가 없으며 그렇게 유추해서도 안 됩니다.No association with any real company, organization, product, domain name, email address, logo, person, places, or events is intended or should be inferred. */*/

프로젝트를 만듭니다.Create the project

이 코드로 작업하려면 먼저 Visual Studio에서 이를 위한 프로젝트를 만듭니다.To work with this code, first create a project for it in Visual Studio. 연습: 관리 코드에 대한 단위 테스트 만들기 및 실행에서 프로젝트를 만드는 단계를 수행합니다.Follow the steps to create the project in Walkthrough: Create and run unit tests for managed code.

참고 항목See also