Tag: 集成测试

如何测试WCF服务的客户端

我有一个WCF服务,它公开了一个命中数据库的方法GetNextObjectInList(int id) 。 WCF服务或多或少地工作,如下所示: public class MyService : IDisposable { public MyService() { this.IntializeDBConnection(); } public int GetNextObjectInList(int id) { /* uses DB connection */ } /* Dispose releases DB connection */ } 这使得客户端代码相对简单: public void UseNextElementInList() { IMyService svc = new MyServiceClient(); int nextID = svc.GetNextObjectInList(this.ID); /* use object */ } 我已经编写了unit testing来测试WCF服务对象,但我想测试消费者代码的各种事情,如时序/性能/error handling,但我不知道如何构建我的测试,使服务没有’击中DB。 […]

找不到Microsoft.Owin.Testing.TestServer 404

当我向TestServer发出请求时,我得到了404响应。 我无法理解为什么,因为我使用相同的配置为普通服务器,它的工作原理。 为了发出请求,我使用了TestServer.HttpClient。

ASP.NET Core UseSetting来自集成测试

我有一个集成测试项目,在测试类中使用.UseSetting() ,如下所示: public AccessTokenRetrieval() : base(nameof(AccessTokenRetrieval)) { var connectionString = GetConnectionString(); var dbSettings = new DbSettings(connectionString); _userGroupRepository = new UserGroupRepository(dbSettings); _roleRepository = new RoleRepository(dbSettings); _userRepository = new UserRepository(dbSettings); _server = new TestServer(new WebHostBuilder() .UseStartup() .UseEnvironment(“IntegrationTest”) .UseSetting(“IntegrationTestConnString”, dbSettings.IdentityServerConnectionString)); _handler = _server.CreateHandler(); _client = _server.CreateClient(); } 我现在想在我的实际项目的Startup.cs中检索该设置。 我试图这样做: public void ConfigureIntegrationTestServices(IServiceCollection services) { var connectionString = Configuration.GetValue(“IntegrationTestConnString”); […]

使用Unity IoC进行MVC集成测试

在使用基于构造函数的DI之后,我正在尝试使用Unity IoC。 问题是试图让集成测试工作。 http://patrick.lioi.net/2013/06/20/streamlined-integration-tests/ “运行集成测试应尽可能多地运用真实系统” 上面的Patrick描述了在MVCunit testing项目中设置IoC ..但我仍然坚持如何实现 public class HomeController : Controller { readonly IWinterDb db; // Unity knows that if IWinterDb interface is asked for, it will inject in a new WinterDb() public HomeController(IWinterDb db) { this.db = db; } public ActionResult Index() { var stories = db.Query() .OrderByDescending(s => s.Rating) .Include(s => […]

创建LocalDB以便从Visual Studio SQL项目进行测试

我正在尝试为我的项目创建集成测试。 我需要测试一个通过存储库调用存储过程的控制器。 应在每个特定测试范围的运行中创建一个空数据库。 所以我将实现以下步骤: 创建LocalDB 运行一些预脚本(添加测试数据) 运行测试 运行一些Post脚本(如果需要在此数据库上运行其他测试) 删除LocalDB 在我的解决方案中,我有.sqlproj与所有表和SP。 如何使用与C#代码中的.sqlproj相同的结构创建LocalDB ? 或者如何生成包含所有对象的脚本以在LocalDB上运行它? 在.sqlproj bin文件夹中存在MyProjectName_Create.sql,但它不在cmd.ExecuteNonQuery();运行cmd.ExecuteNonQuery(); 任何帮助/建议将不胜感激。 谢谢 PS相关问题是如何在DacServices.Deploy()中禁用预部署和部署后脚本

集成测试数据库,我做得对吗?

我想测试依赖于数据库并使用数据库的MVC4应用程序中的方法。 我不想使用模拟方法/对象,因为查询可能很复杂,并且为此创建测试对象需要付出太多努力。 我发现集成测试的想法将测试的数据库操作逻辑包装在TransactionScope对象中,该对象在完成后回滚更改。 不幸的是,这不是从一开始就是一个空的数据库,它也使主键计数(即,当数据库中已经有一些项目时,主键1和2然后在我运行测试之后,它依赖于4),我不想要这个。 这是一个“集成测试”我想出来测试产品是否实际添加(例如,我想创建更难的测试,一旦我拥有正确的基础设施,检查方法)。 [TestMethod] public void ProductTest() { // Arrange using (new TransactionScope()) { myContext db = new myContext(); Product testProduct = new Product { ProductId = 999999, CategoryId = 3, ShopId = 2, Price = 1.00M, Name = “Test Product”, Visible = true }; // Act db.Products.Add(testProduct); db.SaveChanges(); // Assert Assert.AreEqual(1, db.Products.ToList().Count()); […]

什么是进行集成测试的好方法?

我们编写了自己的集成测试工具,可以编写一些“操作”或测试,例如“GenerateOrders”。 我们可以使用许多参数来配置测试(例如订单数量)。 然后我们编写第二个操作来确认测试已通过/失败(即有(nt)个订单)。 该工具用于 集成测试 数据生成 端到端测试(通过混合和匹配多个测试) 它似乎运行良好,但需要开发经验来维护和编写新的测试。 我们的测试团队希望参与其中,他们几乎没有C#开发经验。 我们即将开始一个新的Greenfield项目,我正在研究编写和维护集成测试的最佳方法。 问题如下: 你如何进行集成测试? 你使用什么工具(FitNess?,Custom?,NUnit)? 我期待着各国人民的建议/意见。 提前致谢, 大卫

ASP.Net核心集成测试

我正在努力使用ASP.Net Core RC2进行任何类型的集成测试。 我已经创建了一个基本的Web项目,它在浏览器中运行良好,显示了预期的默认页面。 然后我使用以下测试代码添加了一个新类(在同一个项目中): [TestClass] public class HomeControllerTests { private HttpClient client; [TestInitialize] public void Initialize() { // Arrange var host = new WebHostBuilder() .UseEnvironment(“Development”) .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup(); TestServer server = new TestServer(host); client = server.CreateClient(); } [TestMethod] public async Task CheckHomeIndex() { string request = “/”; var response = await client.GetAsync(request); response.EnsureSuccessStatusCode(); […]

AppSettings.json用于ASP.NET核心中的集成测试

我正在遵循本指南 。 我在API项目中有一个使用appsettings.json配置文件的appsettings.json 。 public class Startup { public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile(“appsettings.json”, optional: true, reloadOnChange: true) .AddEnvironmentVariables(); Configuration = builder.Build(); Log.Logger = new LoggerConfiguration() .Enrich.FromLogContext() .ReadFrom.Configuration(Configuration) .CreateLogger(); } 我正在看的特定部分是env.ContentRootPath 。 我做了一些挖掘,看起来我的appsettings.json实际上并没有复制到bin文件夹,但是这很好,因为ContentRootPath返回了MySolution\src\MyProject.Api\ ,这是appsettings.json文件所在的位置。 所以在我的集成测试项目中,我有这个测试: public class TestShould { private readonly TestServer _server; private readonly HttpClient _client; public TestShould() { […]

In-Memory HttpServer如何知道要托管哪个WebAPI项目?

我想使用流行的内存托管策略对WebAPI项目运行测试。 我的测试位于一个单独的项目中。 这是我考试的开始 [TestMethod] public void TestMethod1() { HttpConfiguration config = new HttpConfiguration(); config.Routes.MapHttpRoute( name: “DefaultApi”, routeTemplate: “api/{controller}/{id}”, defaults: new {id = RouteParameter.Optional}); HttpServer server = new HttpServer(config); HttpMessageInvoker client = new HttpMessageInvoker(server) } 使用HttpServer初始化客户端,建立直接的客户端 – 服务器连接。 除了提供路由配置信息之外,HttpServer如何知道要托管哪个WebAPI项目? 如何同时托管多个WebAPI项目? 似乎HttpServer能够找到WebAPI项目吗? 谢谢