我一直在努力解决最近出现的一个问题,我写的是一个简单的logtofile类.
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
namespace Assets.Code
{
class TimingLogger
{
public static readonly TimingLogger Logger = new TimingLogger();
private static readonly string path = "C:\\Logs\\TimingLog.txt";
private readonly Mutex mutex = new Mutex(false, path);
private StreamWriter writer;
private readonly Queue<string> queue = new Queue<string>();
private bool isRunning;
private readonly object obj = new object();
private TimingLogger()
{
}
public void CheckPath()
{
if (!File.Exists(path))
{
File.Create(path);
}
}
public void Run()
{
isRunning = true;
while …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个 SpecFlow 测试,在其中测试当我的应用程序读取特定结构的文件夹和文件时会发生什么。我想在我的项目中包含这些文件夹和文件,以便测试不仅仅在我自己的计算机上运行。
例如,我的 Specs 项目中有两个文件夹。一个称为“SimpleTestModel”,另一个称为“ComplexTestModel”。如何在我的 SpecFlow 测试中引用这些文件夹?
我最近开始从事一个项目,我想尝试行为驱动开发。我选择 SpecFlow 作为我的测试框架,因为它是一个 C# 应用程序。根据我在网上阅读的有关该主题的内容,BDD 相对于 TDD 的一个优点是 BDD 可用于测试用户界面。但是,我在使用 SpecFlow 执行此操作时遇到了一些麻烦。对于我的第一次测试,我想编写以下功能:
用户单击一个按钮,会出现一个文件夹浏览对话框,选择一个文件夹后,应用程序会在该文件夹中搜索与应用程序相关的文件,并将这些文件加载到应用程序中。
下面的场景或多或少是我想写的:
Scenario: Add Model
Given I am on the main screen
When I click Add Model
And select a folder
And the folder contains a model
Then the model is loaded into the application
Run Code Online (Sandbox Code Playgroud)
我需要什么代码才能让 SpecFlow 单击该 FolderBrowseDialog 上的内容才能完成此测试?
我最近一直在使用WPF和MVVM.我的印象是我非常了解MVVM模式,但我开始有些疑惑.
现在,我为每个Model对象都有一个封装的ViewModel对象.假设我的模型包含两个类:Property其中包含一个列表PropertyValue.在我的ViewModel中,我有一个PropertyVm,其中包含一个Property和一个列表PropertyValueVm(每个包含一个PropertyValue).两个Vm都实现了BaseVm包含该OnPropertyChanged方法的方法.
考虑一个带有两个组合框的视图,用于Property和PropertyValue.第一组合框的ItemsSource将被绑定到的集合PropertyVms和所述第二组合框的ItemsSource将被结合到PropertyValueVms所述的PropertyVm选定的组合框在1.
这完全基于让我首先探索WPF和MVVM的文章:使用ViewModel模式简化WPF TreeView,作者:Josh Smith
但是,我对我的项目包含的大量ViewModel类变得越来越恼火,其中一些包含非常少的代码或者只是相应的Model类.
我遇到的其他实现INotifyPropertyChanged代替了Model对象.这意味着您可以直接将Model对象分配给Comboboxes.这会减少ViewModel类的数量,但是这不违反MVVM的基础知识吗?
我也看到人们提倡每个View一个ViewModel.但是我担心这会把我的ViewModel类转变为庞大,不连贯的文本墙.
简而言之,我的问题是:我是否应该为每个模型封装一个ViewModel?如果没有,那么最佳做法是什么?