我有以下单元测试(有些重命名,但在其他方面相同)在本地运行正常,并按预期传递。
[TestClass, ExcludeFromCodeCoverage]
public class SearchControllerTests
{
private Mock<IRepository> _repository;
private Mock<ICrypter> _crypter;
private SearchController _controller;
[TestInitialize]
public void Initialize()
{
_repository = new Mock<IRepository>();
_crypter = new Mock<ICrypter>();
_controller = new SearchController(_repository.Object, _crypter.Object);
}
[TestMethod]
public void SearchViewSimple()
{
var result = _controller.Search() as PartialViewResult;
Assert.IsNotNull(result);
Assert.AreEqual("Search", result.ViewBag.Title);
}
}
它也通过了TFS 2015。但是,我们正在升级到TFS 2015 Update 2,并且在该环境中测试失败并且具有相同的构建过程。初始化方法在此行上抛出NullReferenceException。
_crypter = new Mock<ICrypter>();
ICrypter是使用CryptSharp的SCrypt的一个非常简单的包装器:
[assembly: Dependency(typeof(ICrypter), typeof(Crypter))]
namespace ProjectNameRemoved.Cryptography
{
public interface ICrypter
{
string GetHash(string value);
}
public class Crypter : ICrypter
{
public string GetHash(string value)
{
// Removed
}
}
}
TFS 2015和2015 Update 2之间是否会出现这样的情况?或者可能是某种依赖问题,其中没有下载CryptSharp?外部连接在构建中很好,并且包似乎已经更新而没有问题或警告。