Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you unit test ASP.NET Core Web Application (.Net Framework)?

I'm building an ASP.NET Core Web Application (.Net Framework) and am having a hard time figuring out how to hook unit tests up to it. I am targeting the .net framework version 4.6.1

If I create a regular "Class Library" project targeting 4.6.1, as I would for previous version of MVC, it lets me add references to my MVC project (which is part of the same solution) but any namespaces I add through a using statement report an error that I might be missing a reference or using statement. If I double click on the reference under the "References" section in the solution explorer it tells me that the project can't be found or hasn't been build yet.

I tried creating a "Class Library (.NET Core)" but that complains since I'm targeting .Net Framework and not .NET Core. I edited the class libaries Project.json to have it target the .net framework and that lets me add my references and doesn't complain when I the namespaces in a using statement but none of my tests are discovered by the test runner. I've tried both XUnit and NUnit and they both behave the same.

Is it possible to unit test an ASP.Net Core Web Application targeting the .Net Framework 4.6.1 or do I need to commit to the .NET Core?

Edit to add my test class Here is my test class stripped down to the bare minimum. TestBank.Services is the class I want to test.

using System;
using TestBank.Services;
using Xunit;

namespace TestBankUnitTests
    {    
    public class Class1
    {        
        [Fact]
        public void TestA()
        {
            Assert.True(false);
        }
    }
}

and here is my project.json

{
    "version": "1.0.0-*",

    "dependencies": {
        "xunit": "2.1.0",
        "dotnet-test-xunit": "1.0.0-rc2-build10025",
        "TestBank": "1.0.0-*"
    },

    "frameworks": {
        "net461": {
        }
    }
}
like image 426
Andre Messier Avatar asked Aug 29 '16 15:08

Andre Messier


People also ask

What is unit test in asp net core?

Unit testing involves testing a part of an application in isolation from its infrastructure and dependencies. When you unit test controller logic, only the content of a single action or method is tested, not the behavior of its dependencies or of the framework itself.

How can use unit testing in asp net?

Add unit test project when creating the applicationCreate a new ASP.NET Web Application named StoreApp. In the New ASP.NET Project windows, select the Empty template and add folders and core references for Web API. Select the Add unit tests option. The unit test project is automatically named StoreApp.


1 Answers

Your project.json needs a testRunner setting. Per the project.json documentation, the testRunner setting not only specifies which test framework to use, but also marks the project as a test project.

Try adding it and see if it finds your tests (verified locally that it will not find tests without this setting in the file)

{
    "version": "1.0.0-*",

    "dependencies": {
        "xunit": "2.1.0",
        "dotnet-test-xunit": "1.0.0-rc2-build10025",
        "TestBank": "1.0.0-*"
    },

    "frameworks": {
        "net461": {
        }
    },

   "testRunner": "xunit"
}
like image 62
stephen.vakil Avatar answered Sep 19 '22 11:09

stephen.vakil