我正在使用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)
我可以看到三个选项:
[编辑]我不清楚的一件事是我想为foreach语句的每次迭代创建一个新的测试用例实例.上面的示例需要解析测试套件配置并填充测试用例对象的集合
我正在使用Visual Studio 2010,并希望从我的代码覆盖率统计信息中排除生成的服务引用代码.
我在2010年前发现了一篇文章,其中提到了使用DebuggerNonUserCode和DebuggerHidden属性.我试过这个,它像宣传的那样工作.DebuggerNonUserCode在类级别设置,但在每个生成的服务引用代码文件中生成50多个类,这不是一个有吸引力的选项.
有没有人有任何替代解决方案?
假设我有一个用户界面,用户可以选择日期.有没有办法检查所选日期是否是连续的,例如:
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) 我一直致力于测试框架,它创建了一个新的应用程序域来运行测试.主要原因是我们正在测试的dll有一些可怕的代码依赖于位于app域路径中的dll.(不,我无法更改此代码.)
我遇到的问题是我的测试团队正在mstest中编写一组功能测试,其中一个记录器写入Console.Out,没有在trx输出中捕获任何日志信息.通过控制台应用程序运行代码时,所有日志信息都可以正常输出.其他已经实施的记录器也是如此.
我的想法是mstest正在将自己的TextWriter设置为Console.Out,但是新的应用程序doamin拥有它自己的TextWriter for Console.Out,因为新的app域有它自己的静态集.
我很感激你的想法.
有没有人知道是否可以使用他们的TFS API Web服务在TFS的一次旅行中检索工作项及其链接的工作项列表?
目前,我们不得不对第一次通话期间制作的每个工作项进行第二次调用,并且正在引入性能问题.
如果不是这样,有没有办法在不检索它们的情况下查看链接工作项的类型(例如,查看它是一项任务还是问题)?
我正在尝试MVC3 Razor视图引擎,我正在探索的功能之一就是能够对视图进行单元测试.
我已经看到了许多示例,其中Razor视图可以编译为程序集并呈现为字符串.问题是它呈现为一个字符串,所以我留下了字符串搜索!
这是我想要做的.
我想这样做的原因是我可以测试输出的特定部分.帮助程序可能会吐出包含各种输出块的HTML.我想要做的是查看是否有一个具有特定值的复选框(例如).如果您已经看过Selenium测试,它与我想要做的类似,除了不是服务器驱动的测试.
有没有办法让编译的Razor(或其他视图引擎)视图发出除字符串以外的东西?
我想知道我是否可以告诉创建对象的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.
我一直在使用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的调用中调用,这是我认为魔法正在发生的地方.
如何格式化日期以以下格式显示03-Feb-2011
我试过这个声明,但它没有正常工作
string.Format(visitDate.Value.ToShortDateString(), "dd-MMM-yyyy")
Run Code Online (Sandbox Code Playgroud) 我试图在没有运气的情况下调用“Get-Credential”CMDlet。阅读 Powershell SDK 我发现抽象方法“PSHostUserInterface.PromptForCredential Method (String, String, String, String)”。有没有实现这个方法的对象?
还有其他解决办法吗?
问候