小编ale*_*lex的帖子

如何为类中的所有测试设置测试类别

我正在使用MSTest,我想同时为测试类中的所有方法设置相同的测试类别,而无需单独为每个方法设置TestCategory属性.如何才能做到这一点?

最方便和最明显的方法是在类上设置TestCategory属性,但它只能应用于方法.

最终目标是在TFS签入的测试运行期间跳过集成测试.

c# tfs unit-testing mstest

43
推荐指数
3
解决办法
2万
查看次数

应该返回Task的方法抛出异常吗?

返回的方法Task有两个报告错误的选项:

  1. 立刻抛出异常
  2. 返回将以异常结束的任务

调用者是否应该期望两种类型的错误报告,或者是否存在将任务行为限制为第二个选项的某些标准/协议?

例:

class PageChecker {
    Task CheckWebPage(string url) {
        if(url == null) // Argument check
            throw Exception("Bad URL");

        if(!HostPinger.IsHostOnline(url)) // Some other synchronous check
            throw Exception("Host is down");

        return Task.Factory.StartNew(()=> {
            // Asynchronous check
            if(PageDownloader.GetPageContent(url).Contains("error"))
                throw Exception("Error on the page");
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

处理这两种类型看起来很丑陋:

try {
    var task = pageChecker.CheckWebPage(url);

    task.ContinueWith(t =>
        {
            if(t.Exception!=null)
                ReportBadPage(url);
        });

}
catch(Exception ex) {
    ReportBadPage(url);
}
Run Code Online (Sandbox Code Playgroud)

使用async/await可能有所帮助,但有没有异步支持的纯.NET 4解决方案?

.net c# asynchronous .net-4.0 task-parallel-library

13
推荐指数
1
解决办法
3690
查看次数

Visual Studio 2010远程调试非常慢(跨域,通过VPN)

总体调试工作,但每个步骤通过代码需要几十秒.

我已经关闭了所有额外的窗口,如堆栈跟踪,手表,汽车; 删除了所有断点.

服务器和开发机器位于不同的域中,因此我在两者上设置了本地用户,并使用匹配的密码.远程调试器作为服务运行.

查看安全日志,我发现有很多关于远程调试帐户登录的条目(记录大约每分钟).

关于如何加快远程调试的任何建议?

  • 开发计算机:四核,8 GB内存,Windows 7 x64,Visual Studio 2010 Ultimate.
  • 目标服务器:ASP.NET网站,2x双核Xeon,2 GB内存,远程调试器2010.
  • 通信信道:VPN,5 Mbit/s,延迟约20 ms.(似乎调试从不使用超过20千字节/秒)

asp.net remote-debugging visual-studio-2010

9
推荐指数
1
解决办法
2959
查看次数

如何将HTML和文本复制到剪贴板?

我正在尝试同时放入HTML和纯文本的剪贴板,以便支持HTML的编辑器可以粘贴HTML,其他编辑器可以使用纯文本.

Clipboard.SetData(DataFormats.Html, htmlWithHeader);
Clipboard.SetData(DataFormats.UnicodeText, plainText);
Run Code Online (Sandbox Code Playgroud)

但只有最后一种格式实际上放在剪贴板上.在上面的示例中,剪贴板仅包含明文(如图所示 Clipboard.GetDataObject().GetFormats()).如果我交换行,剪贴板将只有HTML格式.

如何将两种格式同时放入剪贴板?

.net c# windows clipboard

7
推荐指数
1
解决办法
3252
查看次数

Golang 多方法接口和结构命名

Golang 文档提供了关于如何命名单方法接口的明确指导(通过附加“-er”)。但是,为只有一个结构体实现它的多方法接口命名的最佳实践是什么?

在 C# 中,接口将具有“I”前缀,在 Java 中,类将具有“Impl”后缀。Golang 有没有类似的指导方针?

这里有一个接口的重点是能够模拟它以对依赖于它的组件进行单元测试。

下面是 UserManager 界面的一个具体例子。它将由 web api 控制器使用,该控制器将在此接口上将 HTTP 请求转换为方法调用。这个 web api 控制器将使用 UserManager 的大部分方法。

type UserManager interface { // Should it be UserManagerInterface ?
    GetUser(id int) User
    CreateUser(user User)
    DeleteUser(id int)
    ResetPassword(id int, newPassword string)
    VerifyEmail(id int)
}

type UserManagerImpl struct { // -Impl, or -Struct, or something else? 

}
Run Code Online (Sandbox Code Playgroud)

go

6
推荐指数
1
解决办法
1629
查看次数

.Net来源中的[....]是什么意思?

.Net核心库源代码(可以使用Resharper访问)有时包含奇怪的部分"[....]",您不仅可以在注释中看到,还可以在代码本身中看到.它是什么意思,为什么会这样?

来自HttpWebRequest:

    // Return null only on [....] (if we're on the [....] thread).  Otherwise throw if no context is available.
    internal override ContextAwareResult GetConnectingContext() 
    {
        if (!Async)
        {
            GlobalLog.ThreadContract(ThreadKinds.User | ThreadKinds.[....], "HttpWebRequest#" + ValidationHelper.HashString(this) + "::GetConnectingContext"); 
            return null;
        } 
Run Code Online (Sandbox Code Playgroud)

.net clr

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

为什么 HttpClientHandler 同时具有 Proxy 和 UseProxy 属性?

为什么拥有 Proxy 属性还不够?

如果是null,则不要使用代理,如果是non-null,则使用提供的代理。

.net c#

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

Apache Nifi 与 Gobblin

我正在评估一个大数据项目,我们需要从各种互联网来源(ftp、api 等)提取大量大数据集,进行轻量转换和轻量数据质量/健全性检查(例如:行和列检查),并将其推向下游。目前的焦点是批量的,但预计会支持流式传输。易于大规模支持是一项重要要求。

我们正在研究 Apache Nifi 和 Gobblin,它们的意图似乎重叠。哪种用例最适合哪个平台?它们如何符合上述用例?

谢谢!

etl bigdata apache-nifi gobblin

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

处理C#中的线程(死锁)

我在C#应用程序中使用线程.我有以下场景:

线程A使用以下代码调用线程B:

ThreadStart t = () => StreamManager.ManageStream.mixThread(ref streamClosed, ref opEnded);
Thread threadB = new Thread(t);
threadB.Start();
Run Code Online (Sandbox Code Playgroud)

线程B重复执行此操作:

while (!streamClosed)
    {
         System.Threading.Thread.Sleep(3000);
         //some stuff here
    }
opEnded = true;
Run Code Online (Sandbox Code Playgroud)

boolean streamClosedopEnded通过引用从线程A传递给线程B(使用ref关键字)

线程A在启动线程B后执行以下操作:

streamClosed = true;
while(!opEnded)
{
    System.Threading.Thread.Sleep(1000); //wait 
}
Run Code Online (Sandbox Code Playgroud)

并且线程B停止其工作.但在某些情况下,似乎陷入僵局,因为我从Windows中的Activity Manager中杀了它,所以仍然被阻止.

怎么了?

.net c# multithreading thread-safety

2
推荐指数
1
解决办法
127
查看次数