2010-06-13 23 views

Trả lời

6

Như rwwilden gợi ý, cuộc sống dễ dàng hơn rất nhiều nếu bạn sử dụng API dựa trên luồng thay vì dựa trên tên tệp dựa trên. Sử dụng chế nhạo không phải là quá phù hợp ở đây, IMO; bạn không làm "kiểm tra giao thức" - bạn chỉ muốn một nguồn dữ liệu.

Bạn cũng có thể cung cấp một quá tải mà là một phương pháp hữu ích đơn giản:

public Result ParseXml(string file) 
{ 
    using (Stream stream = File.OpenRead(file)) 
    { 
     return ParseXml(stream); 
    } 
} 

Bạn có thể sau đó một cách hợp lý một cách an toàn không thử nghiệm phương pháp - nó có logic không đáng kể trong nó, sau khi tất cả.

Bây giờ bạn có thể thử nghiệm API dòng dựa trên bằng cách sử dụng một chuỗi mã hóa cứng trong mã của bạn, sau đó gọi Encoding.UTF8.GetBytes(xml) và xây dựng một MemoryStream xung quanh mảng byte kết quả ... nhưng tôi thường thích sử dụng các file dữ liệu riêng biệt trong dự án thử nghiệm của tôi. Đặt loại nội dung thành "tài nguyên được nhúng" và sau đó sử dụng Assembly.GetManifestResourceStream để lấy luồng vào tệp thử nghiệm.

Nếu đây thực sự là tệp XML bình thường, bạn có thực sự muốn tự phân tích cú pháp không? Có lý do nào bạn không muốn rời khỏi khuôn khổ đó hay không và thể hiện API của bạn về API DOM, LINQ to XML hoặc XmlReader?

+0

Đối với bất cứ ai khác lẫn lộn về cách thức hoạt động của đường dẫn ở đây, nó có vẻ giống như sau: 'Your.Project.Name.SubFolder.FileName.extension'. – crush

3

Tất cả những gì bạn phải làm là tìm cách cho lớp của bạn biết tệp nào cần đọc. Vì vậy, nó phụ thuộc một chút vào cách lớp học của bạn được thực hiện. Phương pháp đơn giản nhất sẽ là một cái gì đó như thế này:

public class ClassToTest : IClassToTest 
{ 
    public Result ParseXml(Stream xml) 
    { 
     // Parse xml and return result. 
     return ...; 
    } 
} 

[Test] 
public void TestParseXml() 
{ 
    // Get xml stream to test from somewhere. 
    Stream xmlStream = ...; 

    // Call method to test. 
    var result = new ClassToTest().ParseXml(xmlStream); 

    // Assert results. 
    Assert.IsNotNull(result); 
    ... 
} 

Ý tưởng là bạn nào đó cung cấp các lớp học mà bạn đang thử nghiệm với một tập tin xml mà bạn đã tạo và cho bạn biết những gì phân tích kết quả mong đợi.

+0

Tôi không muốn kiểm tra việc đọc tệp. Tôi chỉ muốn đơn vịKiểm tra phân tích cú pháp. Hệ thống giả có thể giúp tôi bằng cách nào? –

+0

Có thể bạn có thể cung cấp một số mã của phương pháp hoặc lớp học bạn muốn kiểm tra? –

Các vấn đề liên quan