上下文:
我们的一些用户在我们的Web应用程序中报告了文件上载功能的问题.它只是偶尔发生,没有任何特殊模式.我们一直试图弄清楚它,在我们认为可能有用的任何地方添加调试信息,爬行日志等,但我们无法重现或弄清楚它.
问题:
我现在正试图通过使用MSTest和WatiN来重现这个应该重复失败很多次(几百次)的操作.只是想知道测试循环中有多远,我想打印如下:
Console.WriteLine(String.Format("Uploaded file, attempt {0} of {1}", i, maxUploads));
Run Code Online (Sandbox Code Playgroud)
但是,这不会出现在"输出"窗口中.现在我知道您将在测试结果中获得控制台输出(以及您从其中输出的内容Debug.Writeline),但是在测试完成之后才能使用.由于我的测试有数百次重复可能需要一段时间,所以我想知道它已经走了多远.
问题:在测试执行期间,
我是否可以在"输出"窗口中获取控制台输出?
我有一个测试,需要读入XML文件然后进行解析.如何将此文件每次复制到测试运行文件夹中?
XML文件设置为"如果更新则复制"和编译模式为"无"(因为它不是真正可编译的东西)
我想使用mstest.exe在构建服务器上运行我的单元测试,但我不想在构建服务器上安装Visual Studio.我可以在没有Visual Studio的情况下安装MSTest吗?
基本上我想告诉MSTest在启动一系列测试运行之前执行一些代码,基本上我想做的就是坚持使用一些代码Main().
我想这样做的原因是我想在集成测试运行期间使用log4net进行一些日志记录.我不能只使用log4net.Config.XmlConfiguratorassembly属性,因为它在我已经调用过的测试程序集中读取它LoggerManager.文档建议在代码入口点显式配置log4net - 但我的测试中的位置是什么?
我需要能够在TestDriven.NET和MSTest跑步者中运行我的测试.
我发现TestCaseNUnit中的功能非常有用,可以快速指定测试参数,而无需为每个测试使用单独的方法.MSTest中有类似的东西吗?
[TestFixture]
public class StringFormatUtilsTest
{
[TestCase("tttt", "")]
[TestCase("", "")]
[TestCase("t3a4b5", "345")]
[TestCase("3&5*", "35")]
[TestCase("123", "123")]
public void StripNonNumeric(string before, string expected)
{
string actual = FormatUtils.StripNonNumeric(before);
Assert.AreEqual(expected, actual);
}
}
Run Code Online (Sandbox Code Playgroud) 我的单元中的任何调用都会测试,Debug.Write(line)或者Console.Write(Line)只是在调试时跳过,并且从不打印输出.从我正在使用的类中调用这些函数.
我知道单元测试是自动化的,但我仍然希望能够从单元测试中输出消息.
我目前正在维护一个用C#.net编写的"旧"系统,删除一些过时的功能并进行一些重构.感谢上帝,前一个人写了一些单元测试(MSTests).我对JUnit测试很满意,但对MSTests没有太多帮助.
测试方法有一个DeploymentItem属性,指定一个文本文件,该文件由正在测试的业务逻辑方法解析,而第二个DeploymentItem只指定了一个包含一堆必须部署的TIF文件的路径.
[TestMethod()]
[DeploymentItem(@"files\valid\valid_entries.txt")]
[DeploymentItem(@"files\tif\")]
public void ExistsTifTest()
{
...
}
Run Code Online (Sandbox Code Playgroud)
测试工作之前,但现在我不得不更改\ files\tif目录中包含的TIF文件的名称.根据规则,TIF文件名必须匹配特定模式,该模式也由ExistsTifTest()方法检查.现在我不得不更改文件名以使它们适应新的要求,突然之间不再像以前一样部署TIF文件.
有人能给我一个暗示,为什么会发生这种情况或可能是什么原因?如果我在\ files\valid \目录中的"valid_entries.txt"旁边添加一个新的文本文件"my2ndTest.txt",并在测试方法上使用相应的DeploymentItem属性,也会发生同样的事情.该文件未部署?
我通过直接在testrunconfig中定义部署路径来获得现在部署的映像,但我想了解为什么会发生这些事情,或者为什么我的新文件"my2ndTest.txt"在其他人没有部署时会被部署.
我试图断言两个System.Drawing.Size结构的相等性,我得到一个格式异常而不是预期的断言失败.
[TestMethod]
public void AssertStructs()
{
var struct1 = new Size(0, 0);
var struct2 = new Size(1, 1);
//This throws a format exception, "System.FormatException: Input string was not in a correct format."
Assert.AreEqual(struct1, struct2, "Failed. Expected {0}, actually it is {1}", struct1, struct2);
//This assert fails properly, "Failed. Expected {Width=0, Height=0}, actually it is {Width=1, Height=1}".
Assert.AreEqual(struct1, struct2, "Failed. Expected " + struct1 + ", actually it is " + struct2);
}
Run Code Online (Sandbox Code Playgroud)
这是预期的行为吗?我在这里做错了吗?
而不是Nunit中的[SetUp]和[TearDown],Visual Studio Ultimate 2010单元测试中的替代方案是什么.在Nunit中,你可以想象setup和teardown方法是我们班级测试的构造函数和析构函数.