52 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Unit Testing
 | |
| ---
 | |
| 
 | |
| # Unit Testing
 | |
| 
 | |
| Unit Testing is a way of checking that a small chunk of your code, or a 'unit', works as you expect it to and it is very good practice for producing high quality code.
 | |
| It is particularly useful in large projects, to quickly and easily track down what unit is causing defects in your wider project.
 | |
| In commercial development the majority of bugs and issues with code can be mitigated through the use of unit testing. Unit testing also allows for automation testing.
 | |
| Unit testing is also closely used in conjunction with test driven development.
 | |
| 
 | |
| ## Creating a basic unit test
 | |
| 
 | |
| 1. Right click ```Solution``` > ```Add``` > ```New Project```
 | |
|    
 | |
| 2. Select ```Unit Test App (Universal Windows)``` and name the UnitTest project appropriately
 | |
| 
 | |
| 3. Reference the solution you are testing, by right clicking the ```References``` tab in the unit test > ```Add Reference``` and select the solution that you are referencing. Then make the class that you are testing publicly accessible.
 | |
| 
 | |
| 4. Name the TestMethods appropriately, and then input the ```//Arrange``` ```//Act``` ```//Assert``` parameters within the method body code block.
 | |
| 
 | |
| 5. Under the ```// Arrange``` section, each variable involved in that individual test needs to be declared, as well as the ```expectedResult```.
 | |
| 
 | |
| 6. Under the ```// Act``` section, the variables that are going to be passed as an input into a given method are placed into the method's parenthesis, and all of this is initialised as an ```actualResult``` variable. 
 | |
| 
 | |
| 7. Under the ```// Assert``` section, to check whether the ```expectedResult``` is equal to the ```actualResult``` and then assert this finding to make the test pass using the ```Assert.AreEqual(expectedResult, actualResult)``` class and method.
 | |
| 
 | |
| 
 | |
| ## Example code
 | |
| The code below is testing whether the ```MultiplyPointsMethod``` in the ```Multiply Points Class``` will output ```600``` from an input of 6.
 | |
| 
 | |
| ```cs
 | |
| [TestMethod]
 | |
| 		public void BonusPointsOutputTestWithInt6()
 | |
| 		{
 | |
| 			// Arrange
 | |
| 			var userInput = 6;
 | |
| 			var expectedResult = 600;
 | |
| 
 | |
| 			// Act
 | |
| 			int actualResult = MultiplyPointsClass.MultiplyPointsMethod(userInput);
 | |
| 
 | |
| 			// Assert
 | |
| 			Assert.AreEqual(expectedResult, actualResult);
 | |
| 
 | |
| 		}
 | |
| ```
 | |
| 
 | |
| ## Running the test
 | |
| 1. Go to ```Test``` > ```Run``` > ```All Tests```
 | |
| 2. If the testing window does not pop up go to ```Test``` > ```Windows``` > ```Test Explorer```
 |