[英]How to unit test a method that contains a struct as a parameter?
我正在為采用結構作為參數的方法編寫單元測試。
我使用要在TestClass中測試的方法創建了該類的實例,但是即使在該類中將其設置為public,也無法訪問其struct成員。
我錯過了什么嗎?
這是該類的代碼:
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);
}
}
您將需要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());
您必須通過以下方式訪問您的結構:
var info = new Patient.patientInfo();
該結構不是成員-它的定義只是嵌套的,因此您必須指定其包含類( Patient.
)才能進行訪問。
嘗試以下方法:
public class Patient
{
// Member:
public PatientInfo Info;
// Struct definition:
public struct PatientInfo // Use UpperCamelCase
{
// ...
}
}
現在,您可以訪問您的成員:
new Patient().Info = //...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.