2012-01-06 2 views
2

이 날 제발 도와주세요 : 여기에서단위 테스트 방법은

나는 MyAnotherClassCalling(...) 방법을 통해이 Add(...) 메소드를 호출 할 필요가있다. Assert 때 오류가 발생합니다. 나에게 그 길을 보여줘.

public class MyClass 
{ 
    public List<int> number = new List<int>(); 

    public void Add(int a, int b) 
    { 
     int c = a + b; 
     number.Add(c); 
    } 
} 

public class MyAnotherClass 
{ 
    public void CallingMethod(int c, int d) 
    {   
     MyClass mc = new MyClass(); 
     mc.Add(c, d); 
    } 
} 

[TestClass] 
public class UnitTest1 
{ 
    [TestMethod] 
    public void TestMethod1() 
    { 
     MyAnotherClass mac = new MyAnotherClass(); 

     MyClass mc = new MyClass(); 

     mc.Add(2, 3); 
     Assert.AreEqual(5, mc.number[0]);// **this work fine** 

     mac.CallingMethod(2, 3); 
     Assert.AreEqual(5, mc.number[0]);// **but this not** 
    } 
} 

감사

초심자

+0

디버깅 해 보셨습니까? 두 번째'mc.number [0] '은 어떤 값을 제공합니까? – ediblecode

답변

2

클래스 MyAnotherClass는 void를 반환하고 내부 MyClass에서 데이터를 검색 할 수있는 공용 속성을 제공하지 않습니다.

당신은 뭔가 싶어 :

public class MyAnotherClass 
{ 
    public MyClass mc = new MyClass(); 
    public void CallingMethod(int c, int d) 
    { 
     mc.Add(c, d); 
    } 
} 

다음을 테스트 클래스에서, 당신은 mac.mc.number 전화 것 [0] 비교한다.

+0

대단히 감사합니다. 잘 작동합니다! – iJay

3

당신은 결코 "MyAnotherClass"에서 "MC"라는 기준으로 두 번째 경우에 "MC"에 의해 참조되는 객체하지만 새로운 개체를 업데이트 수업.

1

두 인스턴스가 MyClass인데, 하나는 테스트에서 인스턴스화하고 다른 인스턴스는 MyAnotherClass입니다. 당신은 단지 하나 개의 인스턴스를 원한다면 당신은 MyAnotherClass의 생성자에 전달 또는 당신은 그것의 범위를 외부에서 CallingMethod에 정의 된 "엠씨"개체에 액세스하려고 CallingMethod

public class MyAnotherClass 
{ 
    private readonly MyClass _myClass; 

    public MyAnotherClass(MyClass myClass) 
    { 
     _myClass = myClass; 
    } 

    public void CallingMethod(int c, int d) 
    {   
     _myClass.Add(c, d); 
    } 
} 
1

의 인수를해야합니다. MyAnotherClass가 생성자에서 MyClass의 인스턴스를 가져오고 (예를 들어) 속성을 사용하여 참조하고 업데이트 한 다음이 새 참조를 테스트하면 작동합니다.

1

나는 방법은 어떤 의미가 있다고 생각하지 않습니다,

또는 당신은 무엇을 할 수 있는지 나에게 말했다 수 있을까?

public void CallingMethod(int c, int d) 
{   
    MyClass mc = new MyClass(); 
    mc.Add(c, d); 
} 

이 방법에 대한 완전한 소스를 게시하는 것이 좋습니다. 당신이 그런

public int CallingMethod(int c, int d) 
{   
    MyClass mc = new MyClass(); 
    mc.Add(c, d); 
    return mc.number[0]; 
} 

같은 방법을 변경할 수 있습니다 경우

또는, 당신은 더 쉽게 테스트 할 수 있습니다.