我正在使用beta8为我的ASP.NET 5项目设置回归测试。当我设置测试装置时,我想启动红隼,这样我就可以对它进行selenium测试而无需任何外部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
的命令args。
new Microsoft.AspNet.Hosting.Program(CallContextServiceLocator.Locator.ServiceProvider).Main(
new[]
{
"--server",
"Microsoft.AspNet.Server.Kestrel",
"--project",
"../Web/project.json",
"--port",
"5001",
});
答案 0 :(得分:2)
看看MusicStore sample E2E Tests。他们启动所有服务器(IIS,Kestrel,WebListener)。
在幕后,他们使用Microsoft.AspNet.Server.Testing中的部署人员。
答案 1 :(得分:1)
谢谢@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();
}
}
答案 2 :(得分:0)
@mardoxx points out记录了一种更现代,更简单的测试方法here。