请帮助我:
在此处,我需要通过Add(...)
中的Calling(...)
方法调用此MyAnotherClass
方法。当我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 :(得分:3)
在第二种情况下,你永远不会更新“mc”所引用的对象,而是在“MyAnotherClass”类中更新一个名为“mc”的引用的对象。
答案 1 :(得分: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]。
答案 2 :(得分:1)
您有两个MyClass
个实例,一个在测试中实例化,另一个在MyAnotherClass
中实例化。如果您只想拥有一个实例,则应将其传递给MyAnotherClass
的构造函数,或者将参数设为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);
}
}
答案 3 :(得分:1)
您正在尝试访问其范围之外的CallingMethod中定义的“mc”对象。如果MyAnotherClass要在其构造函数中获取MyClass的实例(例如),使用属性引用它,然后更新它,并测试这个新引用 - 它会起作用。
答案 4 :(得分: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];
}
然后,您可以更轻松地测试它。