问题描述
抱歉,这是一个奇怪的用例,但请多多包涵。
我有一个简单的TestFixture(如下所示),它在调用PrimeService来检查数字是否为质数时,每当执行例程(例如OneTimeSetup,Setup,OneTimeTearDown等)时,都会记录到文件中。
有人可以向我解释为什么如果我运行以下情况,TestFixture可以完整运行吗?
- 我在断言之前在测试中放置一个断点。
- 我在VS(2019)中启动“调试测试”过程
- 当测试暂停时(自然会在第一个测试中出现),我按下“停止调试”按钮(Shift F5)
如果我打开日志文件,将会看到所有3个测试都已运行,而TearDowns和最终Teardown也是如此。
抱歉,我只是想了解幕后情况,以及是否有办法终止暂停的测试运行。
谢谢。
[TestFixture]
public class PrimeService_IsPrimeShould
{
private NerdAnalysis.PrimeService _primeService;
private System.IO.StreamWriter file;
[OneTimeSetUp]
public void OneTimeSetup()
{
file = new System.IO.StreamWriter(@"C:\Users\Fozzy Bear\source\repos\NunitTutorial\MyFile.txt");
file.WriteLine("One time SetUp");
}
[SetUp]
public void Setup()
{
_primeService = new NerdAnalysis.PrimeService();
file.WriteLine("Setup");
}
[TestCase(-1)]
[TestCase(0)]
[TestCase(1)]
public void IsPrime_lessthan2_pass(int value)
{
file.WriteLine("Running test for value " + value);
var result = _primeService.IsPrime(value);
Assert.IsFalse(result,"${ value} should not be prime");
var breakLine = "break";
Assert.Pass();
}
[OneTimeTearDown]
public void FinalTearDown() {
file.WriteLine("Final Teardown");
file.Close();
file.Dispose();
}
[TearDown]
public void TearDown()
{
file.WriteLine("Tear down");
}
解决方法
来自http://msdn.microsoft.com/en-us/library/406kfbs1.aspx
如果程序停止调试,则终止正在调试的进程 是从Visual Studio启动的。如果您喜欢这个过程, 而不是从Visual Studio启动它,该过程继续 运行。如果要终止附加的进程,可以 从“进程”窗口终止单个进程或终止所有进程 使用“全部终止”命令附加进程。