Tôi đang sử dụng thuộc tính NUnit 2.5.3 TestCaseSource và tạo một nhà máy để tạo thử nghiệm của mình. Một cái gì đó như thế này:NUnit TestCaseGiá trị truyền qua nguồn cho nhà máy
[Test, TestCaseSource(typeof(TestCaseFactories), "VariableString")]
public void Does_Pass_Standard_Description_Tests(string text)
{
Item obj = new Item();
obj.Description = text;
}
nguồn của tôi là thế này:
public static IEnumerable<TestCaseData> VariableString
{
get
{
yield return new TestCaseData(string.Empty).Throws(typeof(PreconditionException))
.SetName("Does_Reject_Empty_Text");
yield return new TestCaseData(null).Throws(typeof(PreconditionException))
.SetName("Does_Reject_Null_Text");
yield return new TestCaseData(" ").Throws(typeof(PreconditionException))
.SetName("Does_Reject_Whitespace_Text");
}
}
Những gì tôi cần để có thể làm là để thêm một tấm séc chiều dài tối đa đến chuỗi biến, nhưng chiều dài tối đa này được định nghĩa trong các hợp đồng trong lớp đang được kiểm tra. Trong trường hợp của chúng tôi, cấu trúc công khai đơn giản của nó là:
public struct ItemLengths
{
public const int Description = 255;
}
Tôi không thể tìm được cách chuyển giá trị cho trình tạo trường hợp thử nghiệm. Tôi đã thử các giá trị chia sẻ tĩnh và chúng không được chọn. Tôi không muốn lưu nội dung vào một tệp, vì vậy tôi cần phải tạo lại tệp này mỗi lần mã thay đổi.
Tôi muốn thêm dòng sau vào testcase của tôi:
yield return new TestCaseData(new string('A', MAX_LENGTH_HERE + 1))
.Throws(typeof(PreconditionException));
Something khá đơn giản về khái niệm, nhưng điều mà tôi đang tìm kiếm không thể làm. Bất kỳ đề xuất?