如何从测试开始红隼

本文关键字:开始 测试 | 更新日期: 2023-09-27 18:22:06

我正在使用beta8为我的ASP.NET 5项目设置回归测试。当我设置测试设备时,我想启动kestrel,这样我就可以在不需要任何外部web服务器的情况下对其运行硒测试。我该怎么做?

基本上是这样的:

public class RegressionTests : IDisposable
{
    public RegressionTests()
    {
        // Start kestrel
    }
    [Fact]
    public void Test1()
    {
        Assert.True(true);
        // more tests...
    }
    public void Dispose()
    {
        // Shutdown kestrel
    }
}

这是我迄今为止所尝试的,但我没能让它发挥作用。它不会拾取project.json文件。老实说,我不知道该传递给它什么,因为我在任何地方都找不到可以传递给Microsoft.AspNet.Hosting.Program的命令参数。

new Microsoft.AspNet.Hosting.Program(CallContextServiceLocator.Locator.ServiceProvider).Main(
            new[] 
            {
                "--server",
                "Microsoft.AspNet.Server.Kestrel",
                "--project",
                "../Web/project.json",
                "--port",
                "5001",
            });

如何从测试开始红隼

感谢@Victor Hurdugaci。对于未来的谷歌用户来说,这就是我最终拥有的。这是我为xunit使用的一个测试夹具。TestConfiguration类已丢失,但您应该了解这个想法。您需要添加对Microsoft.AspNet.Server.Testing的依赖项。

public class WebTestsFixture : IDisposable
{
    private readonly IApplicationDeployer _deployer;
    private readonly IDisposable _loggerScope;
    public WebTestsFixture()
    {
        var logger = new LoggerFactory()
            .AddConsole(LogLevel.Information)
            .CreateLogger("Regression");
        _loggerScope = logger.BeginScope("RegressionTestSuite");
        var deploymentParameters = new DeploymentParameters(
            TestConfiguration.Configuration.Get<string>("Settings:ApplicationPath"),
            (ServerType)Enum.Parse(typeof(ServerType), TestConfiguration.Configuration.Get<string>("Settings:ServerType")),
            RuntimeFlavor.Clr,
            RuntimeArchitecture.x86)
        {
            ApplicationBaseUriHint = TestConfiguration.Configuration.Get<string>("Settings:ApplicationUri"),
            EnvironmentName = TestConfiguration.Configuration.Get<string>("Settings:EnvironmentName"),
            PublishWithNoSource = false
        };
        _deployer = ApplicationDeployerFactory.Create(deploymentParameters, logger);
        DeploymentResult = _deployer.Deploy();
    }
    public DeploymentResult DeploymentResult { get; private set; }
    public void Dispose()
    {
        _loggerScope.Dispose();
        _deployer.Dispose();
    }
}

@mardoxx指出,这里记录了一种更现代、更简单的测试方法。