2012-08-17 3 views
1

원형 의존성을 포함하는 문제를 찾아서 해결해야합니다. 관련 객체간에 불투명 포인터를 저장하거나 상위 레벨에서 별도의 클래스를 사용하여 객체 간의 관계를 실현해야합니다.순환 의존성 테스팅

그래서 나는 두 개의 클래스가있는 간단한 문제를 발견했습니다. 은행과 계좌는 그렇게해야합니다. 은행에는 계좌가있는 목록이 있으며 계좌에는 은행에 대한 포인터가 있습니다. 순환 종속성 달성.

그러나 내가 만족해야만하는 또 다른 조건은 클래스와 클래스 간의 관계를 서로 독립적으로 테스트 할 수 있어야한다는 것입니다.

은행 계급은 계좌에 돈을들이는 기능을 사용합니다. 예를 들어 계좌 간 자금 이체, 계좌 이체 또는 자금 추가. 계정에는 변수를 편집하는 비슷한 기능이 포함되어 있습니다.

클래스를 인스턴스화하고 함수를 테스트하는 것처럼 계정 클래스를 테스트하는 것은 쉽지만 종속성과 별도로 다른 클래스에 종속되는 클래스를 테스트하려면 어떻게해야합니까? 두 클래스 간의 관계를 테스트하려면 어떻게해야합니까?

순환 종속성에 대한 정보를 찾는 것이 어려워서는 안되지만 큰 프로젝트에서는 피할 수없는 경우가 있습니다.

+0

이 숙제가 있습니까? –

+0

가능한 복제본 http://stackoverflow.com/q/10463001/819272 – TemplateRex

답변

0

중요한 질문은 계정에서 은행이 소유하고있는 은행을 알아야한다는 것입니다. 정보가 필요한 계정의 작업이 은행과 관련된 작업으로 더 잘 수행되지 않는 곳을 생각하는 것은 어렵습니다. 예를 들어 한 계정에서 다른 계정으로 돈을 이체하는 것은 일반적으로 은행 A가 계정 AA에서 돈을 제거하고이를 은행 B에 인도하여 BB에 추가하는 것입니다.

아마도 의존성을 제거한 다음 '불가능한'것이 무엇인지 알아보고, 무엇을 하려는지 재검토하고, 은행이 뭔가를하고있는 것보다는 계정으로 무엇인가를하려고 재조정해야 할 수도 있습니다. 은행.

0

계정 해지 버전 작성을 고려하십시오.

예 :

class Account 
{ 
    public: 
     bool failDebit; 
     bool Debit(unsigned int quid) { return failDebit;} 
} 

는 그런 다음 두 경우 모두에 대한 최초의 failDebit를 설정하여 Bank 클래스를 테스트 할 수 있습니다. 그런 다음 Bank에서 더 복잡한 함수를 사용하는 경우 더 복잡하게 만들 수 있으며 유사한 접근 방식을 사용하여 모든 우발적 인 경우에 대해 Account을 테스트하고 Bank 클래스를 테스트합니다. Account 클래스는 매우 간단 할 수 있으며 반환 값을 모방합니다.

NB 이것은 약간의 단순함으로 고려해야 할 다양한 함수 호출 간의 종속성이있을 수 있습니다.

관련 문제