ASP.net核心中的当前上下文中不存在“程序”这个名称

问题描述 投票:0回答:3

我正在尝试做一个简单的测试,所以我可以练习。我不知道我做错了什么,但我得到了

The name 'Program' does not exist in the current context [/dir/unitTestTest/unitTestTest.csproj]

我不知道为什么。这是我的代码。

我有一个Program.cs

using System;

namespace unitTestDotNet
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            int yy = Add(2,1);

            Console.WriteLine(yy);
            Console.WriteLine(IsOdd(5));
        }

        public static int Add(int x, int y) 
        {
            return x + y;
        }

        public static bool IsOdd(int value) 
        {
            return value % 2 == 1;
        }
    }
}

testclass.cs

using Xunit;

public class testclass 
{
    [Fact]
    public void PassingAddTest()
    {
        Assert.Equal(4, Program.Add(2,2));
    }

}

并在unitTestProject.csproj中

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <GenerateProgramFile>false</GenerateProgramFile>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1"/>
    <PackageReference Include="xunit" Version="2.4.1"/>
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"/>
  </ItemGroup>
</Project>

我是ASP.net核心的新手,我不知道我做错了什么

c# asp.net
3个回答
0
投票

将您的Program类可见性更改为public,并确保从UnitTest项目到public class Program所在的项目具有正确的项目引用。


0
投票

如果要在另一个类中访问它,则应将Program类声明为public。所有类默认为internal,而成员默认为private


0
投票

虽然在测试时关于可见性的答案是正确的,但在您的情况下,testclassProgram位于同一名称空间之外。

看看https://visualstudiomagazine.com/articles/2018/11/01/xunit-tests-in-net-core.aspx,了解有关测试和良好实践的更多信息。


推荐问答