Грешка в покритието на VSTS код?

Някой сблъсквал ли се е с тази "грешка" в покритието на VSTS код? Имате ли предложения?

Правя анализ на покритието на кода с Visual Studio, което обикновено е лесна задача сега с включените инструменти. Имам обаче проблем, който не мога да преодолея. Да кажем, че имам модули A, B, C и D и съм ги маркирал всички за анализ на покритието. Пускам тестовете и разглеждам резултатите и намирам отчет, който съдържа A, B и C - но не и D. Проучвам и откривам, че никакви тестове всъщност не изпълняват код в D (да кажем, че това е предният край на asp.net и Все още не използвам тестване на UI). Тъй като няма тестове за D, причиняващи D да липсва в отчета, общият процент на покритие на кода и „непокрити блокове“ са неправилни.

Някой знае ли как мога да направя едно от следните неща?

  • Изчисляване на общия „брой блокове“ в D, така че да мога ръчно да коригирам отчета за покритие, за да бъде правилен?
  • Получавате ли отчета за покритие, за да показва автоматично броя на блоковете, които не са обхванати за модули, които са инструментирани за покритие, но изобщо не са тествани?

Въпреки че искам тестовото покритие да се подобри, анализирам отчети за покритие, записани в исторически моменти във времето в кодовата база. Затова не искам да създавам тест, който просто изпълнява поне 1 блок код във всяка сглобка и преизчислява тестовото покритие чрез изпълнение на тестовете. Това би отнело доста време заобикаляне на нещо, което изглежда като прост проблем.


person JB Brown    schedule 23.09.2008    source източник


Отговори (1)


Веднъж попаднах на това, много е досадно. В моя случай имаше редица непокрити dll, така че в крайна сметка оцених блокове/kb за нашата кодова база, като използвах информацията за покритите dll, разделена на техния размер. След това, разбира се, за да получите броя на блоковете за непокритите dll файлове, просто умножете средната стойност по размера на dll. Това не е най-точният метод, но ви осигурява бърза оценка и можете да определите грешката си, като изчислите известните си dll и ги сравните с действителните стойности. Полезно е, ако имате голям брой сборки, които се изчисляват.

Разбира се, можете просто да преброите LOC (пренебрегвайки коментарите) и да изчислите единичен LOC, приблизително еквивалентен на блок. Ако си спомням правилно, това е доста точно и би трябвало да ви доближи още повече.

Единственият начин, който знам за принудително изготвяне на отчет за непокрити асембли, е действително да напиша тест, който зарежда асемблирането (тестът дори не трябва да прави нищо).

person Brian B.    schedule 24.09.2008
comment
Благодаря, страхувах се, че няма истинска корекция, както предложихте, но донякъде очаквах да е така. Надявам се това да се промени във VS 10. Ако инструментирам сборка за покритие, очаквам да се покаже в отчета за покритие. В момента не мога да определя покритието на моята функционална кодова база. - person JB Brown; 25.09.2008
comment
Току-що ме хвана тази сутрин, наистина се надявам да поправят това във VS 2010! Доста подвеждащо е да ви кажат, че имате 100% покритие на кода, когато някои сборки изобщо не са покрити! - person TabbyCool; 28.01.2010