【发布时间】:2018-10-01 14:02:51
【问题描述】:
我已经为我的 umbraco 7.12 安装设置了一个单元测试项目,其中安装了 Our.Umbraco.Community.Tests nuget 以及 nunit、nunit 3 测试适配器和 NUnitV2Driver。我有一个单元测试,我从 BaseRoutingTest(来自 umbraco 社区测试 nuget)继承了 nunit 似乎不想运行:
using System;
using System.Globalization;
using System.Web.Routing;
using System.Web.Security;
using Moq;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Configuration;
using Umbraco.Core.Dictionary;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Profiling;
using Umbraco.Tests.TestHelpers;
using Umbraco.Web;
using Umbraco.Web.Mvc;
using Umbraco.Web.Security;
using umbraco7._12test.Models;
using Assert = NUnit.Framework.Assert;
namespace UnitTestProject1
{
[TestFixture]
public class UnitTest1:BaseRoutingTest
{
protected UmbracoContext UmbracoContext { get; set; }
protected UmbracoHelper UmbracoHelper { get; set; }
protected IPublishedContent Content { get; set; }
protected RouteData RouteData { get; set; }
[SetUp]
public override void Initialize()
{
base.Initialize();
SettingsForTests.ConfigureSettings(SettingsForTests.GenerateMockSettings());
this.RouteData = new RouteData();
var routingContext = this.GetRoutingContext(
"http://localhost",
-1,
this.RouteData,
true,
UmbracoConfig.For.UmbracoSettings());
this.UmbracoContext = routingContext.UmbracoContext;
this.Content = Mock.Of<IPublishedContent>();
this.UmbracoContext.PublishedContentRequest = new Umbraco.Web.Routing.PublishedContentRequest(
new Uri("http://localhost"),
routingContext,
UmbracoConfig.For.UmbracoSettings().WebRouting,
s => new string[0])
{
PublishedContent = this.Content,
Culture = new CultureInfo("en-GB")
};
var routeDefinition = new RouteDefinition
{
PublishedContentRequest = this.UmbracoContext.PublishedContentRequest
};
this.RouteData.DataTokens.Add(Constants.Web.UmbracoRouteDefinitionDataToken, routeDefinition);
this.UmbracoHelper = new UmbracoHelper(
this.UmbracoContext,
this.Content,
Mock.Of<ITypedPublishedContentQuery>(),
Mock.Of<IDynamicPublishedContentQuery>(),
Mock.Of<ITagQuery>(),
this.ApplicationContext.Services.DataTypeService,
this.UmbracoContext.UrlProvider,
new Mock<ICultureDictionary>().Object,
Mock.Of<IUmbracoComponentRenderer>(),
new MembershipHelper(this.UmbracoContext, Mock.Of<MembershipProvider>(), Mock.Of<RoleProvider>()));
}
[TearDown]
public override void TearDown()
{
this.UmbracoHelper = null;
this.UmbracoContext = null;
this.Content = null;
base.TearDown();
}
[Test]
public void TestMethod1()
{
var apiController = new
umbraco7._12test.Controllers.ApiController(this.UmbracoContext,this.UmbracoHelper);
var result = apiController.EditContact();
var model = (ContactModel)result.Model;
NUnit.Framework.Assert.IsNotNull(model.FirstName);
NUnit.Framework.Assert.IsNotNull(model.LastName);
}
[Test]
public void TestMethod2() {
Assert.AreEqual(1,1);
}
}
}
一旦我从 BaseRoutingTest 继承,nunit 将不再运行我的测试,没有错误只是一条消息说没有找到测试 -
[01/10/2018 14:56:32 Informational] NUnit couldn't find any tests in C:\project\umbraco7.12test\UnitTestProject1\bin\Debug\UnitTestProject1.dll
[01/10/2018 14:56:32 Informational] NUnit Adapter 3.10.0.21: Test execution complete
[01/10/2018 14:56:32 Warning] No test matches the given testcase filter `FullyQualifiedName=UnitTestProject1.UnitTest1.TestMethod1` in C:\project\umbraco7.12test\UnitTestProject1\bin\Debug\UnitTestProject1.dll
如果我不从 BaseRoutingTest 继承,nunit 将再次运行测试。我需要从 BaseRoutingTest 继承,以设置 UmbracoContext 和其他需要模拟的东西。 有人知道问题出在哪里吗?
【问题讨论】:
标签: unit-testing nunit umbraco umbraco7