You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Playwright录制登录测试代码后,dotnet test无可用测试问题

解决Playwright测试在.NET7中dotnet test找不到测试的问题

问题原因

你当前的代码是控制台程序结构(带Main入口方法),但dotnet test是用来运行测试框架(如xUnit/NUnit)标记的测试方法,而非执行控制台程序。测试发现器无法识别普通的Main方法作为测试用例,因此会提示"No test is available"。

解决方案

1. 调整项目为测试项目(以xUnit为例)

如果你的项目是控制台项目,需要修改项目配置:

  • 打开.csproj文件,将<OutputType>Exe</OutputType>改为<OutputType>Library</OutputType>
  • 添加必要的测试包引用:
<PackageReference Include="Microsoft.Playwright.XUnit" Version="latest" />
<PackageReference Include="xunit" Version="latest" />
<PackageReference Include="xunit.runner.visualstudio" Version="latest" />

2. 重构代码为测试框架格式

将原控制台代码改为xUnit测试类结构,用[Fact]标记测试方法:

using Microsoft.Playwright;
using Xunit;

public class LoginTests
{
    [Fact]
    public async Task PerformLoginTest()
    {
        using var playwright = await Playwright.CreateAsync();
        await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
        {
            Headless = false,
        });
        var context = await browser.NewContextAsync();
        var page = await context.NewPageAsync();

        // 导航到登录页
        await page.GotoAsync("PRIVATE");

        // 填充用户名(无需额外Click,Fill会自动聚焦元素)
        await page.GetByLabel("Username").FillAsync("PRIVATE");
        // 填充密码
        await page.GetByLabel("Password").FillAsync("PRIVATE");

        // 点击登录按钮
        await page.GetByRole(AriaRole.Button, new() { Name = "Sign In" }).ClickAsync();

        // 可选:添加登录成功的断言,比如验证跳转后的URL或页面元素
        // await page.WaitForURLAsync("PRIVATE_POST_LOGIN_URL");
        // Assert.True(await page.GetByText("欢迎").IsVisibleAsync());
    }
}

3. 重新运行测试

在PowerShell中执行dotnet test,此时测试发现器会识别到标记[Fact]的测试方法并执行。

额外说明

  • 原代码中的CS8892警告是因为控制台项目自动生成了同步入口方法,和你写的异步Main冲突,改为测试项目后该警告会自动消失。
  • 可以选择NUnit替代xUnit,只需将包和属性改为Microsoft.Playwright.NUnit和[Test]标记即可。

内容的提问来源于stack exchange,提问作者Disni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:53:25