【发布时间】:2019-06-13 00:19:35
【问题描述】:
我为一个简单的 c#/dotnet-core 控制台应用程序创建了一些单元测试。 我已经在测试项目上创建了引用,但由于某种原因,“dotnet test”cmd 仍然报告以下错误:
UnitTest1.cs(12,25):错误 CS0103:名称“LinkChecker”不 存在于当前语境中 [/Users/med.bensalem/Desktop/dotnet-projects/checklinksTests/checklinksTests.csproj] UnitTest1.cs(19,25):错误 CS0103:名称“LinkChecker”不 存在于当前语境中 [/Users/med.bensalem/Desktop/dotnet-projects/checklinksTests/checklinksTests.csproj]
项目结构:
.
├── checklinksTests
│ ├── UnitTest1.cs
│ ├── checklinksTests.csproj
└── checklinksconsole
└── code
├── LinkChecker.cs
├── Program.cs
└── checklinksconsole.csproj
请在下面找到我项目源代码的代码:
主应用程序 - checklinksconsole:
checklinksconsole.csproj - 文件:
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="HtmlAgilityPack.NetCore" Version="1.5.0.1" />
</ItemGroup>
</Project>
Program.cs - 文件:
using System;
using System.Linq;
using System.Net.Http;
namespace checklinksconsole
{
class Program
{
static void Main(string[] args)
{
var site = "https://www.google.com";
var client = new HttpClient();
var body = client.GetStringAsync(site);
Console.WriteLine(body.Result);
Console.WriteLine();
Console.WriteLine("Links:");
var links = LinkChecker.GetLinks(body.Result);
links.ToList().ForEach(Console.WriteLine);
}
}
}
LinkChecker.cs - 文件:
using System;
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using HtmlAgilityPack;
namespace checklinksconsole
{
public class LinkChecker
{
public static IEnumerable<string> GetLinks(string page)
{
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(page);
var links = htmlDocument.DocumentNode.SelectNodes("//a[@href]")
.Select(n => n.GetAttributeValue("href", string.Empty))
.Where(l => !String.IsNullOrEmpty(l))
.Where(l => l.StartsWith("http"));
return links;
}
}
}
单元测试 - checklinksTests:
checklinksTests.csproj - 文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\checklinksconsole\code\checklinksconsole.csproj" />
</ItemGroup>
</Project>
UnitTest1.cs - 文件:
using System;
using Xunit;
namespace checklinksTests
{
public class UnitTest1
{
[Fact]
public void WithoutHTTPAtTheStartOfTheLink_NoLinks()
{
var links = LinkChecker.GetLinks("<a href=\"google.com\" />");
Assert.Equal(links.Count(),0);
}
[Fact]
public void WithHTTPAtTheStartOfTheLink_LinkParses()
{
var links = LinkChecker.GetLinks("<a href=\"http://google.com\" />");
Assert.Equal(links.Count(),1);
Assert.Equal(links.First(), "google.com");
}
}
}
关于我的代码有什么问题的任何想法。
谢谢
【问题讨论】: