0
.NET Code Coverage for
Continuous Integration
using TeamCity and dotCover
Maarten Balliauw
Technical Evangelist
maarten.ba...
Who am I?
Maarten Balliauw
Belgium (Antwerp)
Technical Evangelist, JetBrains
Focus on web
ASP.NET MVC, Windows Azure, ...
...
Have a question?
Use the Question Pane. We’ll try and answer as we go along.
Recording
Recording will start now….
Agenda
Code coverage
dotCover
Code coverage during CI
Command line runner
TeamCity integration
TeamCity service messages
T...
Code Coverage
“Code coverage is a measure used to
describe the degree to which the source
code of a program is tested by a...
demo
Code Coverage
Using dotCover to capture Code Coverage
Holy grail?
Code Coverage is just a tool
Verify # of statements executed during a test run
100% coverage != 100% bug free ...
dotCover
Capture which statements have been executed (using profiler)
During unit test
During manual test
Display coverage...
demo
dotCover 101
A quick look at dotCover
When to perform code coverage?
Let’s counter that with a question:
When to run unit tests?
On developer machine is always ...
TeamCity
JetBrains Continuous Integration Server
Project
Logical name/unit
Build Configuration
Something we want to run
Bu...
demo
TeamCity 101
A quick look at TeamCity
TeamCity Service Messages
Test resuls from xUnit were reported using TeamCity Service Messages
http://confluence.jetbrains...
dotCover Command Line Runner
dotcover.exe
Create configuration (which executable, which assemblies, …)
Run dotcover.exe wi...
demo
dotCover
command line runner
Using the command line runner
demo
TeamCity plugin
for Visual Studio
Making the story complete
Conclusion
Code coverage
dotCover
Code coverage during CI
Command line runner
TeamCity integration
TeamCity service messag...
Questions
Leading by
example
Resources
Try dotCover now!
http://www.jetbrains.com/dotcover
Tutorials
Getting started
http://confluence.jetbrains.com/di...
More info
Home
Feedback
Videos
Blog
http://jetbrains.com/dotcover
maarten.balliauw@jetbrains.com
http://youtrack.jetbrains...
Thank you for joining us!
Want to learn more?
Follow @dotcover on Twitter
to learn product tips and register
for upcoming ...
.NET Code Coverage for Continuous Integrationusing TeamCity and dotCover
Upcoming SlideShare
Loading in...5
×

.NET Code Coverage for Continuous Integration using TeamCity and dotCover

825

Published on

How much of our code is being covered by our unit tests? Are there areas we are not testing? By capturing code coverage data during a test run, we can analyze which areas of our applications are well-tested and which ones require additional tests to be written. And where better to capture code coverage information than on our build server?
In this webinar we will use dotCover to collect code coverage information while running tests in our CI process. We will see how we can configure code coverage and how we can use the TeamCity Visual Studio plugin to download the coverage snapshot generated on the build server and inspect it using dotCover on a developer machine.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
825
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of ".NET Code Coverage for Continuous Integration using TeamCity and dotCover"

  1. 1. .NET Code Coverage for Continuous Integration using TeamCity and dotCover Maarten Balliauw Technical Evangelist maarten.balliauw@jetbrains.com @maartenballiauw
  2. 2. Who am I? Maarten Balliauw Belgium (Antwerp) Technical Evangelist, JetBrains Focus on web ASP.NET MVC, Windows Azure, ... PHP, ... Big passion: Cloud (Windows Azure) Home brewer http://blog.maartenballiauw.be @maartenballiauw
  3. 3. Have a question? Use the Question Pane. We’ll try and answer as we go along.
  4. 4. Recording Recording will start now….
  5. 5. Agenda Code coverage dotCover Code coverage during CI Command line runner TeamCity integration TeamCity service messages TeamCity Visual Studio plugin
  6. 6. Code Coverage “Code coverage is a measure used to describe the degree to which the source code of a program is tested by a particular test suite.” Wikipedia - http://en.wikipedia.org/wiki/Code_coverage
  7. 7. demo Code Coverage Using dotCover to capture Code Coverage
  8. 8. Holy grail? Code Coverage is just a tool Verify # of statements executed during a test run 100% coverage != 100% bug free / well-tested code It’s relatively easy to cover all lines of code It’s much harder to test them correctly Should we aim for 100%? We should care about code coverage! Identify parts of code not covered by any type of test and reduce chance of defects
  9. 9. dotCover Capture which statements have been executed (using profiler) During unit test During manual test Display coverage percentage Statement level coverage visualization Hotspots to quickly identify parts that need testing Filtering, exporting, ... Navigate between code and test Command line runner
  10. 10. demo dotCover 101 A quick look at dotCover
  11. 11. When to perform code coverage? Let’s counter that with a question: When to run unit tests? On developer machine is always nice, but… Continuous Integration is our view of the truth Compile, Run tests, Code coverage, …
  12. 12. TeamCity JetBrains Continuous Integration Server Project Logical name/unit Build Configuration Something we want to run Build Steps Various steps we want to run (like compilation or unit tests, .NET, Java, deployment, …) Build Execution log and artifacts of a build configuration after run Integrated build step for running NUnit + code coverage using dotCover
  13. 13. demo TeamCity 101 A quick look at TeamCity
  14. 14. TeamCity Service Messages Test resuls from xUnit were reported using TeamCity Service Messages http://confluence.jetbrains.com/display/TCD8/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity- Reporting.NETCodeCoverageResults ##teamcity[testStarted name='testName' captureStandardOutput='<true/false>'] ##teamcity[testFinished name='testName' duration='<test_duration_in_milliseconds>'] We can report coverage using this technique as well! ##teamcity[importData type='dotNetCoverage' tool='dotcover' path='coverage.xml' Now all we need is way to run tests with coverage...
  15. 15. dotCover Command Line Runner dotcover.exe Create configuration (which executable, which assemblies, …) Run dotcover.exe with that configuration Export to XML, HTML, …
  16. 16. demo dotCover command line runner Using the command line runner
  17. 17. demo TeamCity plugin for Visual Studio Making the story complete
  18. 18. Conclusion Code coverage dotCover Code coverage during CI Command line runner TeamCity integration TeamCity service messages Visual Studio Plugin
  19. 19. Questions Leading by example
  20. 20. Resources Try dotCover now! http://www.jetbrains.com/dotcover Tutorials Getting started http://confluence.jetbrains.com/display/NETCOM/Getting+Started+with+dotCover Command line runner http://confluence.jetbrains.com/display/NETCOM/How+to+Run+Code+Coverage+from+Command+Line+in+dot Cover dotCover in TeamCity http://confluence.jetbrains.com/display/NETCOM/How+to+Run+Code+Coverage+with+dotCover+in+TeamCity TeamCity Service Messages http://confluence.jetbrains.com/display/TCD8/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwit hTeamCity-Reporting.NETCodeCoverageResults
  21. 21. More info Home Feedback Videos Blog http://jetbrains.com/dotcover maarten.balliauw@jetbrains.com http://youtrack.jetbrains.com/issues/DCVR http://www.youtube.com/jetbrainstv .NET Tools Channel http://blog.jetbrains.com/dotnet
  22. 22. Thank you for joining us! Want to learn more? Follow @dotcover on Twitter to learn product tips and register for upcoming webinars
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×