2012-12-07 2 views
5

코드를 확인하기 위해 NUnit 및 테스트 데이터베이스를 어떻게 사용합니까? 이론적으로 mock (moq)을 사용 하겠지만 내 코드는 유지 보수 모양이 더 좋으며 모드를 수정하고 모든 mock을 설정하지 않아도됩니다.단위 테스트 및 테스트 데이터베이스 사용

방금 ​​테스트 프로젝트를 만든 다음 실제로 테스트 데이터베이스에 연결하여 테스트를 작성하고 응용 프로그램에서 코드를 실행합니까? 그런 다음 assert를 사용하여 코드를 확인하고 요청한 내용이 올바르게 반환되는지 확인합니다.

+0

실제로 통합 테스트를 의미하는 것 같습니다. 단위 테스트는 고립되어있어 의존성에 대한 가짜/위조 구현을 제공하여 데이터베이스 코드가없는 메소드를 테스트합니다. –

답변

6

내 코드를 확인하기 위해 NUnit과 테스트 데이터베이스를 어떻게 사용합니까? 나는 이론적으로 mock (moq)을 사용 하겠지만 내 코드는 유지 보수 모양이 더 많으며 모드를 수정하면 모든 mock을 설정하지 않아도됩니다.

모의 객체 사용은 클래스의 정확한 구현 동작을 테스트하려는 경우에만 유용합니다. 즉, 한 클래스가 다른 클래스의 특정 메서드를 호출한다고 말 그대로 나타냅니다. 예 : 나는 Ninja.Attack()이 Sword.Unsheath()를 호출한다고 주장하고 싶습니다.

난 그냥 테스트 프로젝트를 만들려면 어떻게해야합니까, 다음 실제로 응용 프로그램에서 내가 wwould 나의 테스트 데이터베이스에 연결하고 코드를 실행 테스트를 작성? 그런 다음 asserts를 사용하여 코드를 확인하고 내가 무엇을 요청하는지 정확하게 확인합니다.

이것은 단순한 오래된 단위 테스트에 불과합니다. 이를 달성하는 데 장애가 없다면 이것이 가장 효과적인 테스트 방법이 될 것이라는 좋은 지표입니다. 그것은 실용적이고 매우 효과적입니다.

당신이 언급하지 않은 또 다른 테스트 도구가 있습니다. 이것은 스텁이라고합니다. 내가보기 엔 당신이 더 많은 정보를 원하시면이 고전적인 기사를 읽고 추천 :

http://martinfowler.com/articles/mocksArentStubs.html

+0

감사합니다, 테스트 DB는 나를 위해입니다. 그래서 내 코드로 db를 호출하고 올바른지 테스트하십시오. – cdub

+0

사실 너무 좋게 보이지만 작동합니다. 특히 귀하의 신청서가 이미 작성되었음을 고려하십시오. –

2

우리가 이론적 사건에 대해 이야기하고 있지 않기 때문에, 이것은 내가 할 것 인 것이다 - 나의 이해에서 무엇을 테스트 할 것은 그 앱이 있는지 여부 DB에 제대로 연결되어 있고 원하는 데이터를 가져 오는 지 여부.

  1. 원하는 데이터를 요청
  2. 열기의 코드에서 DB에 대한 연결을 일부 더미 데이터를 추가 같은 스키마에 당신이에서 무엇을 가지고 테스트 할 수
  3. 쓰기 주장을 테스트 DB를 생성 당신이 예상 한 것에 대한 DB

또한 이러한 테스트는 자체 테스트가 아니며 데이터베이스가 실행 중인지 여부와 같은 다른 요소에 의존하기 때문에 단위 테스트라고는 생각하지 않습니다. . 나는 응용 프로그램의 여러 구성 요소가 함께 사용될 때 예상대로 작동 하는지를 테스트 할 통합 테스트에 가까워 진다고 말합니다.

(단답은 ^^ 내가 말하고자하는 것이 거의 합계입니다.)

+1

예 +1 쓰고 싶습니다. – cdub