我对最小起订量和 TDD/单元测试都是新手。我发现自己在每个测试方法的“排列”部分重复了很多相同的代码,似乎真的应该有更好的方法。
首先是经常重复的代码:
#region Arrange
#region create my Mock Objects
var serviceMock = new Mock<IOrganizationService>();
var factoryMock = new Mock<IOrganizationServiceFactory>();
var tracingServiceMock = new Mock<ITracingService>();
var notificationServiceMock = new Mock<IServiceEndpointNotificationService>();
var pluginContextMock = new Mock<IPluginExecutionContext>();
var serviceProviderMock = new Mock<IServiceProvider>();
#endregion
#region Authentication Stuff
var organizationUri = "http://.../XRMServices/2011/Organization.svc";
var orgServiceManagement = ServiceConfigurationFactory.CreateManagement<IOrganizationService>(new Uri(organizationUri));
var credentials = new AuthenticationCredentials();
var username = "USER_ID";
var password = "USER_PWD";
var domain = "MyDomain";
credentials.ClientCredentials. Windows.ClientCredential = new NetworkCredential(username, password, domain);
IOrganizationService service = new OrganizationServiceProxy(orgServiceManagement, credentials.ClientCredentials);
#endregion
#endregion
我考虑过制作自定义片段、常量等,但这并不能真正节省重复代码,只是节省了我一些打字时间。
接下来,我考虑在类级别上对以上所有内容进行范围...但是一些警告铃声响起...如果该类为所有测试方法实例化一次,那么可能存在变量污染吗?鉴于这里的小样本确实不会发生,但我正在努力提前思考/养成良好的做法和习惯。
如何创建一个在该对象中定义了所有这些的“模拟和身份验证”对象。然后我可以拥有几个具有不同凭据的对象,并且我的测试方法可以仅引用/使用所需的一种变体?
那么对于将一些 DRY 原则应用于我的测试用例,您有什么建议/建议。