我正在为一个以结构作为参数的方法编写单元测试。
我使用我想在TestClass中测试的方法创建了一个类的实例,但是我无法访问它的struct成员,即使它在类中设置为public。
我错过了什么或者这不可能吗?
以下是该类的代码:
public class Patient
{
public struct patientInfo
{
public string firstName;
public string lastName;
public string telephoneNumber;
public string dateOfBirth;
public string gender;
public string address;
}
// Method I want to test:
public bool Register(patientInfo patientDetails)
{
// Method code in here.
}
测试类的代码:
[TestClass]
public class RegisterPatientTest
{
[TestMethod]
public void RegisterMethodTest()
{
Patient TestPatient = new Patient();
TestPatient. //Can't access the struct member...
// What I want to use the struct for but gives error:
Assert.IsTrue(TestPatient.Register(patientDetails) == false);
}
}
答案 0 :(得分:2)
您需要Patient.patientInfo
才能访问该结构。该结构不属于您的类的特定实例。实际上,您需要将周围类的名称作为内部类的标识符,就好像您的周围类是namespace
一样。因此,要创建结构的实例,请使用new Patient.patienInfo { ... }
。
除此之外,你可以使用Assert.IsFalse
来使你的代码更清晰。所以你明白了:
[TestMethod]
public void RegisterMethodTest()
{
var p = new Patient();
Patient.patientInfo info;
info.firstName = ...
// What I want to use the struct for but gives error:
Assert.IsFalse(p.Register(info));
}
但是我根本看不到任何使用这个嵌套结构的用法。您可以直接在课堂上使用这些属性,从而使代码结构变得更加容易:
public class Patient
{
public string firstName;
public string lastName;
public string telephoneNumber;
public string dateOfBirth;
public string gender;
public string address;
}
现在只需在测试中调用它:
var p = new Patient { firstName = ... };
Assert.IsFalse(myPatient.Register());
答案 1 :(得分:0)
您必须以这种方式访问您的结构:
var info = new Patient.patientInfo();
此结构不是成员 - 它的定义只是嵌套,因此您必须指定其包含的类(Patient.
)才能访问。
请改为尝试:
public class Patient
{
// Member:
public PatientInfo Info;
// Struct definition:
public struct PatientInfo // Use UpperCamelCase
{
// ...
}
}
现在您可以访问您的会员:
new Patient().Info = //...