Tag: unit testing

c#中的模拟文件IO静态类

我是Unit Testing的新手,我需要在System.IO命名空间中模拟File静态类。 我正在使用Rhinomock,实现这一目标的最佳方法是什么, 让我说我需要模拟File.Exists,File.Delete ……

如何使用Moq模拟ILogger / ILoggerService

我正在为View Model类编写一些unit testing。 该类的构造函数注入ILoggerService。 该接口定义了一个返回ILogger的方法GetLog。 类似下面的东西, 它代表一个实现ILoggable的类: – protected ViewModelBase(ILoggerService loggerService) { Logger = loggerService.GetLog(this); } 我正在尝试unit testing我的CreateNewOrder方法,如下所示: private void CreateNewOrder(INewOrderViewModel newOrderViewModel) { Logger.Log(“Sending Create New Order Message”, LogCategory.Info); var createNewOrderMessage = new OrderMessage(newOrderViewModel); _eventAggregator.GetEvent().Publish(createNewOrderMessage); } 我将如何模拟ILoggerService以便返回有效的Logger? 目前我的Unit测试抛出NullReferenceExeception。 我正在用Moq做我的嘲笑。 我想象我需要做一些事情 var loggerService = new Mock(); loggerService.Setup(svc => svc.GetLog(??)) 但是,如果不让我的测试类实现ILoggable,我无法看到。 提前致谢。

Lambda表达式的代码覆盖率

我在我的代码中看到了一个模式,其中lambda表达式显示为未覆盖在代码覆盖中,调试器会逐步执行代码并且没有条件块。 public CollectionModel() { List languages = LanguageService.GetLanguages(); this.LanguageListItems = languages.Select( s => new SelectListItem { Text = s.Name, Value = s.LanguageCode, Selected = false }). // <– this shows as not covered AsEnumerable(); } 这有点奇怪。 有任何想法吗?

主菜单中缺少Visual Studio TEST

更新到visual studio 2013,更新4后,屏幕上缺少TEST选项,我认为Visual Studio update 5会修复它,但事实并非如此。 我的选择中缺少“TEST”,我不知道为什么。 我已经尝试重置设置,它没有帮助,重置设置: 我无法通过TOOLS – > CUSTOMIZE – > COMMANDS – > ADD COMMAND添加测试,它不在那里。

比较两个enum *类型*的等价性?

在我的应用程序中,我有两个等效的enum 。 一个住在DAL,另一个住在服务合同层。 它们具有相同的名称(但位于不同的名称空间中),并且应具有相同的成员和值。 我想写一个强制执行此操作的unit testing。 到目前为止,我有以下内容: public static class EnumAssert { public static void AreEquivalent(Type x, Type y) { // Enum.GetNames and Enum.GetValues return arrays sorted by value. string[] xNames = Enum.GetNames(x); string[] yNames = Enum.GetNames(y); Assert.AreEqual(xNames.Length, yNames.Length); for (int i = 0; i < xNames.Length; i++) { Assert.AreEqual(xNames[i], yNames[i]); } // TODO: How […]

为什么具有隐式转换运算符的自定义结构上的Assert.AreEqual失败?

我创建了一个自定义结构来表示金额。 它基本上是decimal的包装器。 它有一个隐式转换运算符,可将其强制转换为decimal 。 在我的unit testing中,我断言Amount等于原始十进制值,但测试失败。 [TestMethod] public void AmountAndDecimal_AreEqual() { Amount amount = 1.5M; Assert.AreEqual(1.5M, amount); } 当我使用int(我没有创建转换运算符)时,测试确实成功。 [TestMethod] public void AmountAndInt_AreEqual() { Amount amount = 1; Assert.AreEqual(1, amount); } 当我hoverAreEqual ,它显示第一个解析为 public static void AreEqual(object expected, object actual); 第二个导致 public static void AreEqual(T expected, T actual); 看起来int值1隐式地转换为Amount ,而小数值1.5M则不是。 我不明白为什么会这样。 我本来希望恰恰相反。 第一个unit testing应该能够将decimal转换为Amount 。 […]

如何使用AutoFixture生成在编译时未知的任意类型的存根对象

我可以得到像这样的构造函数参数类型: Type type = paramInfo.ParameterType; 现在我想从这种类型创建存根对象。 有可能吗? 我试过autofixture: public TObject Stub() { Fixture fixture = new Fixture(); return fixture.Create(); } ..但它不起作用: Type type = parameterInfo.ParameterType; var obj = Stub();//Compile error! (“cannot resolve symbol type”) 你能救我吗?

为什么我的Silverlight XAML绑定的unit testing失败了?

我已经定义了以下combobox: 其中IsoCurrenciesList是IEnumerable – 我们定义的类型,在视图模型中声明为: private IEnumerable isoCurrenciesList; public IEnumerable IsoCurrenciesList { get { return isoCurrenciesList; } set { isoCurrenciesList = value; RaisePropertyChangedEvent(“IsoCurrenciesList”); } } 我的unit testing创​​建了一个视图和视图模型的实例,并在本地列表中设置了一些虚拟货币数据: [TestInitialize] public void TestInit() { _target = new View(); _viewModel = new ViewModel(); var ukp = new IsoCurrency { Code = “GBP”, Description = “Pound Sterling”, LocaleID = 826 […]

找出要在MS TestInitialize中执行的下一个测试方法

我将特定测试方法的测试数据保存在与函数相同的文件夹中。 我以前在每个[TestMethod] , ClearAllAndLoadTestMethodData()中都有相同的函数调用,它通过StackTrace确定方法名称。 现在,我将此函数移至[TestInitialize] 。 如何找到即将执行的方法的名称? 我以为TestContext提供了这个。 我可以通过[AssemblyInitialize()]访问它,并在第一次运行时将其属性Name设置为testmethod的名称。 但是,稍后这不会改变(如果我将对象保存在静态字段中)。

Moq工作单位

我是unit testing的新手,我想为我的搜索function创建一个测试。 我的服务层看起来像: public class EmployeeService: BaseService, IEmployeeService { public EmployeeService(IUnitOfWork unitOfWork) : base(unitOfWork) { _employeeRepo = unitOfWork.EmployeeRepository; } public IEnumerable Search(Employee advancedSearch, int[] divisionIds, bool showInactive, int pageSize, int? page) { return _employeeRepo.Search(advancedSearch, divisionIds, showInactive, pageSize, page); } } unit testing: [Test] public void SearchShouldFilterActiveEmployees() { var employees = new List { new Employee […]