Continuous Integration with Visual Studio 2010

Recently, I was looking for some free tools which can help me in Continuous Integration for my project. I was developing a project in C# using VS2010 and  using TortoiseSVN and AnkhSVN for version control.

Scenario:

I want a FREE tool that runs on the build server and checks for fresh commits. If the commit breaks the trunk then I want email notifications sent. I also want this tool to run all his MSTest tests periodically and send emails if there is a failed test.

Solution 1: CruiseControl.NET

CruiseControl.NET is an Automated Continuous Integration server, implemented using the .NET Framework.

Build Server Scenarios

  • Setting up Source Control
  • Build on Check-in
  • Add unit tests
  • Add Coverage
  • Add source code analysis
  • Add packaging
  • Deploy Package

Check this for more details: http://www.cruisecontrolnet.org

Solution 2: TeamCity

TeamCity is free for up to 20 build configurations and has an easy to use Web/GUI interface.

It Provides

  • building Visual Studio solutions; native support for MSBuild, Powershell or NAnt
  • code analysis for C#, VB.NET, XAML, and many other languages powered by ReSharper
  • testing with .NET testing frameworks, including: NUnit, MSTest, MSpec, xUnit and all Gallio-based frameworks
  • code coverage with dotCover, NCover or PartCover
  • best-in-class NuGet support

Check this for more details: https://www.jetbrains.com/teamcity/features/

Solution 3: Jenkins/Hudson

Jenkins is an award-winning application that monitors executions of repeated jobs, such as building a software project or jobs run by cron. Among those things, current Jenkins focuses on the following two jobs:

  • Building/testing software projects continuously, just like CruiseControl or DamageControl. In a nutshell, Jenkins provides an easy-to-use so-called continuous integration system, making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. The automated, continuous build increases the productivity.
  • Monitoring executions of externally-run jobs, such as cron jobs and procmail jobs, even those that are run on a remote machine. For example, with cron, all you receive is regular e-mails that capture the output, and it is up to you to look at them diligently and notice when it broke. Jenkins keeps those outputs and makes it easy for you to notice when something is wrong.

Check this for more details: https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins

Check this for Jenkins.NET: http://justinramel.com/2012/09/17/jenkins-dot-net/

Summary

All these tools are free and you can choose any of them. They serve the same purpose “CI – Continuous Integration“.

Hope this will help !!!

Jay Ganesh

Advertisements

Test your Frontend JavaScript Code

A unit is a small section of code. Unit testing means you test that bit of code to make sure it functions properly. This increases confidence in your code.

Unit tests are important when many people work on the same codebase. If one engineer changes code in one part of the project, you want to ensure that the rest of the project still works.

Unit tests are especially important in dynamically typed languages such as JavaScript, since there is no compiler to catch common problems.

Below are the some of the articles written by Matt how we can test the JavaScript code:

1) JavaScript unit testing: guiding principles and common excuses By Matt Harrington

2) How to write JavaScript unit tests with Mocha By Matt Harrington

3) JavaScript unit testing: using the Chutzpah test runner in Visual Studio By Matt Harrington

4) Using Mocha JS, Chai JS and Sinon JS to Test your Frontend JavaScript Code

Hope this will help !!!

Jay Ganesh

 

Automated acceptance testing with Cucumber for .NET and JAVA

One of the biggest problems in software development is communication. Although we have a lot of technology at hand, the more complex a project is, the harder it is to communicate efficiently. In order to improve the interaction between clients, project managers, analysts and developers, a definition of the requirements is needed.

Another important part is testing. With the ever-growing complexity of software, acceptance testing becomes increasingly important. Manual acceptance testing is very time consuming and error-prone though.

Full Article: http://www.kenneth-truyers.net/2013/08/25/automated-acceptance-testing-with-cucumber-for-net-and-java/

Happy Programming !!!
Jay Ganesh