小编Tit*_*tan的帖子

编写单元测试时断言“什么也没发生”

在编写单元测试时,是否有一种简单的方法可以确保没有意外发生?

由于可能的副作用列表是无限的,添加大量 Assert 以确保每一步都没有任何变化似乎是徒劳的,并且混淆了测试的目的。

我可能错过了一些框架功能或良好实践。
我使用的是 C#7、.net 4.6、MSTest V1。

编辑:更简单的例子是测试视图模型的设置器,应该发生两件事:值应该改变并且应该引发 PropertyChanged 事件。这两件事很容易检查,但现在我需要确保其他属性值没有改变,没有引发其他事件,没有触及系统剪贴板......

.net c# unit-testing mstest

5
推荐指数
1
解决办法
2305
查看次数

告诉窗口关闭C#中的一个线程

我在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的线程调用的,但是我真的不知道如何获得我想要的行为.

如何从这个回调中告诉主线程它应该以正确的方式关闭对话框窗口?

c# wpf callback

4
推荐指数
1
解决办法
1187
查看次数

C#中的继承和容器

我在这里工作,让我说我有:

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# inheritance containers upcasting

3
推荐指数
1
解决办法
690
查看次数

标签 统计

c# ×3

.net ×1

callback ×1

containers ×1

inheritance ×1

mstest ×1

unit-testing ×1

upcasting ×1

wpf ×1