我正在尝试做一个简单的测试,所以我可以练习。我不知道我做错了什么,但我得到了
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核心的新手,我不知道我做错了什么
将您的Program类可见性更改为public
,并确保从UnitTest项目到public class Program
所在的项目具有正确的项目引用。
如果要在另一个类中访问它,则应将Program类声明为public。所有类默认为internal
,而成员默认为private
。
虽然在测试时关于可见性的答案是正确的,但在您的情况下,testclass
与Program
位于同一名称空间之外。
看看https://visualstudiomagazine.com/articles/2018/11/01/xunit-tests-in-net-core.aspx,了解有关测试和良好实践的更多信息。