2013-08-29 57 views
23

Giải pháp của tôi được thiết lập với các dự án có tên là "ProjectName" với "ProjectName". Tôi muốn loại trừ các dự án thử nghiệm từ phân tích phạm vi mã theo VS 2012 (MS Test) và đã quản lý thành công để thực hiện việc này bằng cách thêm thuộc tính ExcludeFromCodeCoverage vào mỗi lớp thử nghiệm như được mô tả here.Làm thế nào để loại trừ các dự án có tên kết thúc bằng ".Test" từ phân tích vùng phủ sóng của tôi trong VS2012 Unit Testing

Khi số lượng các lớp kiểm tra đang phát triển, sẽ tốt hơn nếu loại trừ toàn bộ các hội đồng Kiểm tra. Tôi muốn sử dụng các tập tin .runsettings cũng được mô tả trong liên kết MSDN nhưng dường như không có bất kỳ may mắn.

Đây là .runsettings tập tin của tôi:

<?xml version="1.0" encoding="utf-8"?> 
<RunSettings> 
    <DataCollectionRunSettings> 
    <DataCollectors> 
     <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 
     <Configuration> 
      <CodeCoverage> 
      <ModulePaths> 
       <Exclude> 
       <ModulePath>.*tests.*</ModulePath> 
       <ModulePath>.*Tests.*</ModulePath>> 
       </Exclude> 
      </ModulePaths> 
      </CodeCoverage> 
     </Configuration> 
     </DataCollector> 
    </DataCollectors> 
    </DataCollectionRunSettings> 
</RunSettings> 

Điều này dẫn đến kết quả rỗng tạo ra cho Mã Vùng phủ sóng, nếu tôi nhận xét ra toàn bộ <Exclude> khối tôi nhận được mã số bảo hiểm trên tất cả các dự án của giải pháp bao gồm việc thử nghiệm (như mong đợi, tôi chỉ muốn đảm bảo rằng việc bổ sung tệp runSettings không gây ra vấn đề).

Tôi đã thử thêm ở:

<Include> 
    <ModulePath>.*\.dll$</ModulePath> 
    <ModulePath>.*\.exe$</ModulePath> 
</Include> 

Nhưng một lần nữa, tôi nhận được kết quả rỗng. Tôi đã ấn tượng rằng một khối Bao gồm (hoặc không tồn tại) trống sẽ bao gồm mọi thứ theo mặc định trừ khi khớp với khối Loại trừ, vì vậy tôi không nghĩ rằng điều này là bắt buộc.

Có ai có thể chỉ cho tôi đúng hướng không? Tôi thấy từ this other question rằng tôi không đơn độc trong việc cố gắng loại trừ các bài kiểm tra, nhưng tôi muốn làm điều đó ở cấp độ lắp ráp và MSDN dường như đề xuất tôi có thể.

+0

Đây có phải là một người bị mắc mưu của http://stackoverflow.com/questions/14458246/visual -studio-2012-using-runsettings-to-exclude-assembly-from-code-coverage? rq = 1? – stackman

+0

@stackman Không, tôi không nghĩ rằng nó là, tôi đang sử dụng một runettings đơn giản hơn nhiều tập tin nó chính xác cùng một chuỗi đường dẫn được đề xuất bởi MSDN. – Dutts

+0

bạn đã thực sự cố gắng sử dụng ... ... cùng một lúc? –

Trả lời

36

Có kết nối với vấn đề về thời gian như được đề cập here. Nếu bạn thay đổi phần loại trừ này

<ModulePath>.*tests.dll</ModulePath> 
<ModulePath>.*Tests.dll</ModulePath> 

hay này

<ModulePath>.*\.tests\..*</ModulePath> 
<ModulePath>.*\.Tests\..*</ModulePath> 

nó sẽ làm việc

+0

Rất cám ơn, đây chính xác là những gì tôi đã làm sau. – Dutts