小编btl*_*log的帖子

创建单例来访问统一容器或通过应用程序传递它是否更好?

我正在使用IoC框架,我选择使用Unity.我还没有完全理解的一件事是如何更深入地解析应用程序中的对象.我怀疑我当时还没有灯泡可以说清楚.

因此,我尝试在psuedo'ish代码中执行以下操作

void Workflow(IUnityContatiner contatiner, XPathNavigator someXml)
{
   testSuiteParser = container.Resolve<ITestSuiteParser>
   TestSuite testSuite = testSuiteParser.Parse(SomeXml) 
   // Do some mind blowing stuff here
}
Run Code Online (Sandbox Code Playgroud)

所以testSuiteParser.Parse执行以下操作

TestSuite Parse(XPathNavigator someXml)
{
    TestStuite testSuite = ??? // I want to get this from my Unity Container
    List<XPathNavigator> aListOfNodes = DoSomeThingToGetNodes(someXml)

    foreach (XPathNavigator blah in aListOfNodes)
    {
        //EDIT I want to get this from my Unity Container
        TestCase testCase = new TestCase() 
        testSuite.TestCase.Add(testCase);
    } 
}
Run Code Online (Sandbox Code Playgroud)

我可以看到三个选项:

  1. 创建一个Singleton来存储我可以在任何地方访问的Unity容器.我真的不喜欢这种方法.添加这样的依赖项来使用依赖注入框架似乎有点奇怪.
  2. 将IUnityContainer传递给我的TestSuiteParser类及其中的每个子类(假设它是n级深度或实际上大约3级深度).在任何地方传递IUnityContainer只是看起来很奇怪.我可能只需要克服这一点.
  3. 在正确的方式上使用Unity的灯泡时刻.希望有人可以帮助轻弹开关.

[编辑]我不清楚的一件事是我想为foreach语句的每次迭代创建一个新的测试用例实例.上面的示例需要解析测试套件配置并填充测试用例对象的集合

c# ioc-container unity-container

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

如何忽略代码覆盖率数据中生成的代码

我正在使用Visual Studio 2010,并希望从我的代码覆盖率统计信息中排除生成的服务引用代码.

我在2010年前发现了一篇文章,其中提到了使用DebuggerNonUserCode和DebuggerHidden属性.我试过这个,它像宣传的那样工作.DebuggerNonUserCode在类级别设置,但在每个生成的服务引用代码文件中生成50多个类,这不是一个有吸引力的选项.

有没有人有任何替代解决方案?

unit-testing code-coverage visual-studio-2010

17
推荐指数
3
解决办法
6045
查看次数

检查c#中的日期范围是否是连续的?

假设我有一个用户界面,用户可以选择日期.有没有办法检查所选日期是否是连续的,例如:

4/4,4/5,4/6,4/7,4/8,4/9,4/10或

4/29,4/30,5/1,5/2,5/3

我知道我可能会遍历日期范围并检查,但是如果有一个内置方法已经检查过这个我更好奇.

关于上述情况,它们是有序的,它们可以延续到下个月.

我使用的是.NET Framework 2.0,无法使用LINQ.

关于汤姆的回答:

DateTime dtStart = new DateTime(2011,5,4);
DateTime dtEnd = new DateTime(2011,5,11);

int numberOfDaysSelected = 7; //Assume 7 days were selected.

TimeSpan ts = dtEnd - dtStart;


if(ts.Days == numberOfDaysSelected - 1)
{
Console.WriteLine("Sequential");
}
else
{
Console.WriteLine("Non-Sequential");
}
Run Code Online (Sandbox Code Playgroud)

c# .net-2.0

12
推荐指数
1
解决办法
3598
查看次数

在新的应用程序域中运行时,如何将stdout输入mstest输出?

我一直致力于测试框架,它创建了一个新的应用程序域来运行测试.主要原因是我们正在测试的dll有一些可怕的代码依赖于位于app域路径中的dll.(不,我无法更改此代码.)

我遇到的问题是我的测试团队正在mstest中编写一组功能测试,其中一个记录器写入Console.Out,没有在trx输出中捕获任何日志信息.通过控制台应用程序运行代码时,所有日志信息都可以正常输出.其他已经实施的记录器也是如此.

我的想法是mstest正在将自己的TextWriter设置为Console.Out,但是新的应用程序doamin拥有它自己的TextWriter for Console.Out,因为新的app域有它自己的静态集.

我很感激你的想法.

.net c# mstest appdomain

11
推荐指数
1
解决办法
2522
查看次数

使用TFS API在单个查询中检索工作项及其链接的工作项

有没有人知道是否可以使用他们的TFS API Web服务在TFS的一次旅行中检索工作项及其链接的工作项列表?

目前,我们不得不对第一次通话期间制作的每个工作项进行第二次调用,并且正在引入性能问题.

如果不是这样,有没有办法在不检索它们的情况下查看链接工作项的类型(例如,查看它是一项任务还是问题)?

.net tfs-sdk tfs2010 c#-4.0

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

单元测试MVC3 Razor助手/没有字符串的视图

我正在尝试MVC3 Razor视图引擎,我正在探索的功能之一就是能够对视图进行单元测试.

我已经看到了许多示例,其中Razor视图可以编译为程序集并呈现为字符串.问题是它呈现为一个字符串,所以我留下了字符串搜索!

这是我想要做的.

  1. 创建一个Razor助手
  2. 编译助手
  3. 运行编译好的帮助程序,传入ViewModel
  4. 获取帮助程序的输出作为某种HTML/XML /树结构

我想这样做的原因是我可以测试输出的特定部分.帮助程序可能会吐出包含各种输出块的HTML.我想要做的是查看是否有一个具有特定值的复选框(例如).如果您已经看过Selenium测试,它与我想要做的类似,除了不是服务器驱动的测试.

有没有办法让编译的Razor(或其他视图引擎)视图发出除字符串以外的东西?

testing unit-testing viewengine razor asp.net-mvc-3

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

是否可以判断对象是否在不同的AppDomain中运行?

我想知道我是否可以告诉创建对象的appdomain.这是一个单元测试,但也是有用的常识.我有以下几段代码(这是用于说明的示例代码).

public Foo Create()
{
    AppDomainSetup appDomainSetup = 
        new AppDomainSet { ApplicationBase = @"z:\SomePath" }

    AppDomain appDomain = 
                  AppDomain.CreateDomain("DomainName", null, appDomainSetup);

    return (Foo) appDomain.CreateInstanceAndUnwrap("MyAssembly", "MyClass");
}
Run Code Online (Sandbox Code Playgroud)

然后我打电话

Foo myFoo = Create();
Run Code Online (Sandbox Code Playgroud)

我想要做的是找出myFoo上的AppDomain方法将被调用,以测试Create方法实际上是否已经创建了一个新的AppDomain.我意识到我可以在Foo上添加一个方法

public class Foo
{
    public string appDomainName 
    { 
        get { return AppDomain.CurrentDomain.FriendlyName; } 
    }
}
Run Code Online (Sandbox Code Playgroud)

这将为我提供Foo运行的应用程序.我认为这不仅仅是单元测试的优雅解决方案.如果有人可以帮助定义类似的方法,那将会很棒.

public string GetAppDomainNameWithDotNetWitchcraft(Foo myFoo)
{
    // Insert voodoo here.
}
Run Code Online (Sandbox Code Playgroud)

编辑:感谢您的回复和评论.我问过的问题已经得到了解答,这些评论帮助我意识到我的错误.我真正想要实现的是测试是否创建了一个新的AppDomain.

.net c# appdomain

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

System.TraceListener如何使用进程名称添加消息?

我一直在使用System.Diagnostics.Trace进行日志记录是一个非常基本的应用程序.一般来说,我只需要做它.缺点是,如果我打电话

Trace.TraceInformation("Some info");
Run Code Online (Sandbox Code Playgroud)

输出是"SomeApp.Exe Information:0:Some info".最初,这让我很开心,但不再这样.我想将"Some info"输出到控制台.所以我认为编写一个cusom TraceListener,而不是使用内置的ConsoleTraceListener,可以解决问题.我可以看到一个特定的格式,我想要在第二个冒号之后的所有文本.这是我试图看看这是否有效.

class LogTraceListener : TraceListener
{
    public override void Write(string message)
    {
        int firstColon = message.IndexOf(":");
        int secondColon = message.IndexOf(":", firstColon + 1);

        Console.Write(message);
    }

    public override void WriteLine(string message)
    {
        int firstColon = message.IndexOf(":");
        int secondColon = message.IndexOf(":", firstColon + 1);

        Console.WriteLine(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我输出firstColon的值,它总是-1.如果我提出一个断点,那么消息总是只是"一些信息".所有其他信息来自哪里?

所以我在调用Console.WriteLine之前看了一下调用堆栈.调用我的WriteLine方法的方法是:System.dll!System.Diagnostics.TraceListener.TraceEvent(System.Diagnostics.TraceEventCache eventCache,string source,System.Diagnostics.TraceEventType eventType,int id,string message)+ 0x33 bytes

当我使用Reflector查看此消息时,这一切看起来都非常简单.在将其发送到Console.WriteLine后,我看不到任何更改字符串值的代码.唯一可以更改底层字符串值的方法是调用UnsafeNativeMethods.EventWriteString,它有一个参数,指向消息的指针.

有谁知道这里发生了什么,我是否可以改变输出只是我的消息没有额外的绒毛.我可以将一些字符串"Some info"传递给Console.WriteLine(或任何其他方法)以及输出的字符串不同,这似乎是邪恶的魔法.

编辑:我找到了魔法.显然这不是魔术.在调用WriteLine之前,Write方法从对WriteHeader的调用中调用,这是我认为魔法正在发生的地方.

.net c# tracelistener

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

在C#中格式化DateTime

如何格式化日期以以下格式显示03-Feb-2011

我试过这个声明,但它没有正常工作

string.Format(visitDate.Value.ToShortDateString(), "dd-MMM-yyyy")
Run Code Online (Sandbox Code Playgroud)

c# format datetime mask

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

Powershell:如何从 C# 代码中获取凭据?

我试图在没有运气的情况下调用“Get-Credential”CMDlet。阅读 Powershell SDK 我发现抽象方法“PSHostUserInterface.PromptForCredential Method (String, String, String, String)”。有没有实现这个方法的对象?

还有其他解决办法吗?

问候

powershell

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