如何针对Active Directory对NextPasswordChangeDate函数进行单元测试

时间:2009-05-26 14:56:33

标签: unit-testing active-directory mocking

我正致力于使用Active Directory的项目。我针对AD设置了几个单元测试,其中一些是使用模拟对象实现的,其中一些是通过对AD的实际调用实现的。

作为我项目的一个功能,我必须检索一个所谓的“用户配置文件”。此用户配置文件主要包含简单属性,如“cn”,“company”,“employeeid”等。但是,我尝试填写的一个属性不是简单的“NextPasswordChangeDate”。

据我所知,获得此功能的唯一方法是获取域策略的maxPwdAge并将此信息与pwdLastSet一起使用。

现在我的问题是:我如何以智能方式对其进行单元测试?我想出了三个选项,所有选项都不是很好:

  1. 使用我自己的帐户作为搜索帐户,通过其他方式查找日期并在单元测试中对其进行硬编码。通过这种方式,我可以很好地对我的代码进行单元测试,但每个月,我都要更改单元测试,因为我更改了密码。
  2. 使用一些密码永不过期的帐户。这有点毫无意义,因为我无法真正测试代码的正确性。
  3. 使用模拟对象并确保发生正确的API调用。这个选项允许测试函数行为的正确性,但是经过测试的逻辑实际上是在单元测试中,因此我无法确定它是否正确,即使测试通过了。
  4. 你建议三个中的哪一个?或者你有更好的选择吗?

1 个答案:

答案 0 :(得分:0)

从1和2开始,依赖AD存在并具有已知值似乎更像是对我的集成测试。

我通常认为,如果可能的话,任何非确定性行为都应该被界面化并嘲笑(#3)。正如您所指出的,这将始终留下一些实际的实现代码,这些代码不是可单元测试的,但是将由针对已知AD系统运行的集成测试覆盖。

Related Question/Answer