Unit testing 测试Spring.NET注入的成员资格提供程序

Unit testing 测试Spring.NET注入的成员资格提供程序,unit-testing,dependency-injection,asp.net-membership,integration-testing,spring.net,Unit Testing,Dependency Injection,Asp.net Membership,Integration Testing,Spring.net,我很喜欢会员资格提供者的灵活性,但我正努力让集成测试通过,这让我挠头。我的web应用程序版本在我的服务层中注入了成员资格提供者,但我无法在我的单元/集成测试应用程序版本中对其进行配置/正常工作。下面是我如何为成员资格提供程序配置所有内容的 App.config: auth-config.xml: 我的成员资格提供程序在core-config.xml中配置: 正如我前面提到的,我可以在我的web应用程序中注入服务没有问题,但我似乎无法让我的测试正常工作: [TestFixture] 公

我很喜欢会员资格提供者的灵活性,但我正努力让集成测试通过,这让我挠头。我的web应用程序版本在我的服务层中注入了成员资格提供者,但我无法在我的单元/集成测试应用程序版本中对其进行配置/正常工作。下面是我如何为成员资格提供程序配置所有内容的

App.config:


auth-config.xml:


我的
成员资格提供程序
在core-config.xml中配置:


正如我前面提到的,我可以在我的web应用程序中注入
服务
没有问题,但我似乎无法让我的测试正常工作:

[TestFixture]
公共类AccountMembershipServiceTest
{
受保护的IMembershipService AccountMembershipService{get;set;}//PropertyT已注入
[测试]
public void SanityCheck()
{
Assert.IsNotNull(this.AccountMembershipService);
}        
}
但是,唉……失败:

------ Test started: Assembly: App.Tests.dll ------

Test 'App.Tests.IntegrationTesting.AccountMembershipServiceTest.SanityCheck' failed: 
  Expected: not null
  But was:  null
    Integration\AccountMembershipServiceTest.cs(23,0): at App.Tests.IntegrationTesting.AccountMembershipServiceTest.SanityCheck()

0 passed, 1 failed, 0 skipped, took 1.80 seconds (NUnit 2.5.5).
还有其他人有同样的问题,或者已经用Spring.NET解决了这个问题吗


注意:我的单元/集成测试应用程序中的所有其他配置对象都正常工作,只有我的成员资格提供程序有问题。

我认为问题出在测试代码中,而不是成员资格配置或Spring.NET上下文配置中

使用,你的测试

  • 应该从一个Spring.NET测试基类继承
  • 应该具有要注入的公共属性(使用默认的自动连接类型)-如果您的属性受保护,它将为null,并且您将从问题中获得失败的testresult
  • 应指定配置位置
例如:

[TestFixture]
公共类AccountMembershipServiceTest:
AbstractDependencyInjectionSpringContextTests
{
//公共属性将按类型自动连接:
公共IMembershipService AccountMembershipService{get;set;}
受保护的重写字符串[]配置位置{…}
}
如果需要,则应使用受保护字段,而不是属性,并在测试构造函数中设置
PopulateProtectedVariables=true

[TestFixture]
公共类AccountMembershipServiceTest:
AbstractDependencyInjectionSpringContextTests
{
公共帐户成员资格服务测试()
{
PopulateProtectedVariables=true;
}
//将按字段名在容器中查找受保护的字段:
受保护的IMembershipService AccountMembershipService;
受保护的重写字符串[]配置位置{…}
}
我怀疑您的会员资格配置实际上是正确的:

  • 您已将
    app.config
    添加到单元测试项目中
  • 您在成员资格
    类型=”
    配置中使用了

参考:我可能在考试中隐瞒了太多细节。我的“AccountMembershipServiceTest”实际上是从另一个类继承的,该类继承自“AbstractTransactionalDbProviderSpringContextTests”。我尝试了“AbstractDependencyInjectionSpringContextTests”和“AbstractSpringContextTests”……仍然没有成功。我可以看到配置的对象,但它不是注入。这个周末我要做一次深度潜水。我不知道为什么我要去那里。将它们公开,并将自动连线设置为自动检测。这对你来说很好。我不知道为什么你必须手动设置自动线自动检测。顺便说一句-在注释中,您可以使用反勾号(``)而不是单引号(')来应用代码格式:“AbstractSpringContextTests”变为
AbstractSpringContextTests
。这也适用于问答。啊,谢谢!至于自动检测,这不是修复的一部分。我在玩一些属性,但我只是把它留给了自动检测。