如何从测试开始红隼
本文关键字:开始 测试 | 更新日期: 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指出,这里记录了一种更现代、更简单的测试方法。