Skip to content

sarn1/example-aspnet-xunit-testing

Repository files navigation

example-aspnet-xunit-testing

https://teamtreehouse.com/library/xunitnet-unit-test-framework

https://xunit.github.io/docs/getting-started-desktop.html

  • Install xUnit via Nuget
  • Install xUnit.Runner.VisualStudio Nuget
  • Click add new project > search for xunit > xunit test project
  • Create the test, see PointTests.cs
  • Add TreehouseDefense as a depedencies.
  • Run test by going to Test > Run All Test or CTRL+R + A
  • [Fact()] = attribute for xUnit unit testing framework that says that the method is a unit test.
// Fill out MapTests.OnMapTest to test that Map.OnMap returns true when passed a point that is on the map.
using Xunit;

namespace TreehouseDefense.Tests
{
    public class MapTests
    {
        [Fact]
        public void OnMapTest()
        {
            var point = new Point(1,2);
            var map = new Map(5,5);
            
            if (map.OnMap(point))
            Assert.True(true, "Pass");
        }
    }
}
  • Xunit runs each test randomly so you can't rely on the order of each method.
  • For Xunit, the constructor is run each time a test method is runned, so the _map3x3, _pathLocations3, and _path3 are reset each time.
    public class PathTest
    {
        private Map _map3x3;
        private MapLocation[] _pathLocations3;
        private Path _path3;
        public PathTest()
        {
            _map3x3 = new Map(3, 3);

            _pathLocations3 = new MapLocation[]
            {
                new MapLocation(0, 1, _map3x3),
                new MapLocation(1, 1, _map3x3),
                new MapLocation(2, 1, _map3x3),
            };

            _path3 = new Path(_pathLocations3);
        }

        [Fact]
        public void MapLocationIsOnPath()
        {

            var target = _path3;
            Assert.True(target.IsOnPath(new MapLocation(0,1,_map3x3)));
        }

        public void MapLocationIsNotOnPath()
        {
            var target = _path3;
            Assert.False(target.IsOnPath(new MapLocation(3, 3, _map3x3)));
        }
    }
  • CTRL+RR - simular to multiple cursors on a variable
public class Calculator
{
    public double Result;

    public Calculator(double number)
    {
        Result = number;
    }     

    public void Add(double number)
    {
        Result += number;
    }

    public void Subtract(double number)
    {
        Result -= number;
    }
}


public class CalculatorTests
{
    [Fact]
    public void Initialization()
    {
        var expected = 1.1;
        var target = new Calculator(1.1);
        Assert.Equal(expected, target.Result, 1);
    }

    [Fact]
    public void BasicSubtract()
    {
        var target = new Calculator(3.3);
        target.Subtract(2.2);
        var expected = 1.1;
        Assert.Equal(expected, target.Result, 1);
    }
    
    [Fact]
    public void BasicAdd()
    {
        var target = new Calculator(1.1);
        target.Add(2.2);
        var expected = 3.3;
        Assert.Equal(expected, target.Result, 1);
    }
}
  • The purpose of mock is to provide a super simplified version of the dependencies in order to test, nothing more.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages