Cocos Creator 설치
cocos 사이트로 이동, 프로그램을 다운 받습니다. URL : https://www.cocos.com/en/creator install download 설치 파일 정보 -- 다운로드 파일 압축 해제, 설치 파일 버전 및 크기는 아래와 같습니다. CocosCreator_v2.3.1_setup.exe -- 버전 : 2.3.1 -- 파일 크기 : 626MB 현 시점 낮은 버전으로 다운 받았습니다. 1)...
oq는 C#에서 사용할 수 있는 Mock Library 중에 하나입니다. Rhino Mocks와 더불어서 C#에서 매우 유명한 Mock 라이브러리 중에 하나입니다.
Mock 라이브러리를 왜 쓰는가?
Mock 라이브러리는 단위 테스트를 쉽게 하기 위해 존재합니다. 예를 들어서, 한 클래스 테스트에 데이터베이스를 활용해야 하는 경우가 있다고 가정을 합시다. 이 경우 직접 데이터베이스에 정보를 넣었다 뺐다 하면 상당히 큰 부담이 됩니다. 이런 부담을 주지 않고, 데이터베이스의 행동을 흉내냄으로써 테스트를 더욱 용이하게 합니다. 하지만 이런 용이함을 얻기 위해서는 인터페이스들에 의해서만 프로그램을 조작하는 설계를 해야 하기는 합니다. (이런 설계가 처음에는 많이 어색하지만, 나중에는 이런 설계가 더 나은 설계임을 깨닫게 됩니다.)
간단히 이야기해서 Mock 라이브러리는 복잡하고 시간이 걸리는 테스트의 시간을 줄여주기 위해서 존재한다고 볼 수 있습니다.
Moq 다운로드
아래 링크로 가서 다운로드를 받도록 합시다.
http://code.google.com/p/moq/downloads/list
지금은 프로젝트가 진행되고 있지 않은 상태입니다. (Rhino는 다른가 해서 봤더니 Rhino도 2010년에 프로젝트가 종결되었더군요.) 아마 더 추가할 기능이 없어서 종료된 것 같다는 생각이 듭니다.
Moq 추가
Add Reference를 이용해서 Moq를 추가해 줍시다.
Browse를 눌러서 Moq를 잘 찾아서 추가해 주면 됩니다. 전 Visual Studio 2010을 쓰고 있으니 NET40 폴더에 있는 것을 골라서 추가했습니다.
예제
인터넷 서점의 일부를 예제로 만들어 보면서 Moq에 대해 공부해 보도록 하겠습니다.
우선 아래와 같은 준비물들이 필요합니다.
Book.cs |
public class Book { public string Name { get; set; } public int Price { get; set; } public string ISBN { get; set; } } |
IBookRepository.cs |
public interface IBookRepository { List<Book> GetBooks(); } |
PriceProcessor.cs |
public class PriceProcessor { public PriceProcessor(IBookRepository bookRepository) { bookRepo = bookRepository; } public int GetTotalPrice() { int result = 0; foreach (Book b in bookRepo.GetBooks()) { result += b.Price; } return result; } private IBookRepository bookRepo; } |
책들을 GetBooks를 통해서 얻은 후에 그 책 값을 PriceProcessor에서 구하는 구조입니다.
이제 NUnit와 Moq를 이용해서 PriceProcessor를 테스트해 보도록 하겠습니다.
PriceProcessorTests.cs |
[TestFixture] public class PriceProcessorTests { [Test] public void GetTotalPrice_NoDiscount_ReturnCorrectPriceSum() { List<Book> bookList = new List<Book>() { new Book() {ISBN=“1234”, Price=10000, Name=“C언어 입문“}, new Book() {ISBN=“1235”, Price=20000, Name=“C++ 입문“}, new Book() {ISBN=“1236”, Price=30000, Name=“ASP.NET MVC3 완성“}, }; Mock<IBookRepository> bookRepoMock = new Mock<IBookRepository>(); bookRepoMock.Setup(b => b.GetBooks()).Returns(bookList); PriceProcessor priceProcessor = new PriceProcessor(bookRepoMock.Object); Assert.That(priceProcessor.GetTotalPrice(), Is.EqualTo(60000)); } } |
우선 bookList라는 책의 목록을 만들었습니다.
그리고 bookRepoMock을 만들었습니다. 여기에서 자세해 보아야 할 것은 다음 줄입니다.
bookRepoMock.Setup(b => b.GetBooks()).Returns(bookList);
GetBooks함수가 불리면, bookList를 반환하라고 명령을 내리고 있습니다.
그리고 완성이 된 bookRepoMock을 Object 속성을 이용해서 priceProcessor에 넘겨 주고 있습니다.
그리고 Assert로 검사를 하면 정확히 60000이 나옵니다.
이제 다음 글부터는 Moq의 고급 기능들에 대해 알아 보도록 하겠습니다.
[출처] [Moq] 1. 기본|작성자 주의사신
cocos 사이트로 이동, 프로그램을 다운 받습니다. URL : https://www.cocos.com/en/creator install download 설치 파일 정보 -- 다운로드 파일 압축 해제, 설치 파일 버전 및 크기는 아래와 같습니다. CocosCreator_v2.3.1_setup.exe -- 버전 : 2.3.1 -- 파일 크기 : 626MB 현 시점 낮은 버전으로 다운 받았습니다. 1)...
1. Header (제목) # 2. Empasis(강조) --- & === 3. List (목록) 1.2. -.-. 4. Link(링크) [URL Explanation Text ](LinkURL "링크 설명(title)을 ...
step 1. License Key 발급 신청 설치 프로그램 다운로드 한다. Wowza 사이트 접속하여 trial license key 발급 신청을 한다. URL : https://www.wowza.com/pricing/trial 신청이후 등록한 메일로 라이선스 키가 발급된다. Step 2...
문서 작성을 할때 복잡한 수식을 표현하는 방법은 다양합니다. Latex라는 문서 조판에 사용되는 프로그램 언어가 그 중에 하나 입니다. latex 언어를 채용해서 수식을 표현하는 프로그램도 많아지고 있는...