在编写单元测试时,是否有一种简单的方法可以确保没有意外发生?
由于可能的副作用列表是无限的,添加大量 Assert 以确保每一步都没有任何变化似乎是徒劳的,并且混淆了测试的目的。
我可能错过了一些框架功能或良好实践。
我使用的是 C#7、.net 4.6、MSTest V1。
编辑:更简单的例子是测试视图模型的设置器,应该发生两件事:值应该改变并且应该引发 PropertyChanged 事件。这两件事很容易检查,但现在我需要确保其他属性值没有改变,没有引发其他事件,没有触及系统剪贴板......
我在WPF工作,我有一个启动监听套接字的对话窗口,并且应该在有人连接时立即关闭.这是我天真的,非工作的代码段:
void acceptCallback(IAsyncResult iar)
{
socket = listenSocket.EndAccept(iar);
DialogResult = true; // error here
Close();
}
private void ValidButton_Click(object sender, RoutedEventArgs e)
{
IPEndPoint iep = new IPEndPoint(IPAddress.Any, port);
listenSocket.Bind(iep);
listenSocket.Listen(1);
listenSocket.BeginAccept(acceptCallback, null);
}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,告诉我无法从这个线程访问DialogResult,我知道我的"acceptCallback"函数是从异步运行accept的线程调用的,但是我真的不知道如何获得我想要的行为.
如何从这个回调中告诉主线程它应该以正确的方式关闭对话框窗口?
我在这里工作,让我说我有:
class A
{}
class B : A
{}
List<B> myList;
Run Code Online (Sandbox Code Playgroud)
我想,在代码的一部分中投射此myList,List< A>,但是当我尝试时,我收到一个错误:
List<A> myUpcastedList = (List<A>)myList; //not working
Run Code Online (Sandbox Code Playgroud)
有可能做到吗?如果是的话,语法是什么?
c# ×3
.net ×1
callback ×1
containers ×1
inheritance ×1
mstest ×1
unit-testing ×1
upcasting ×1
wpf ×1