You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
2.0 KiB
C#

2 years ago
using Xunit.Abstractions;
namespace MultiThreadingStudy.xUnitTest
{
public class ThreadTest:IDisposable
{
private readonly ITestOutputHelper _output;
public ThreadTest(ITestOutputHelper testOutput)
{
_output = testOutput;
}
/// <summary>
/// 测试方法的启动线程为后台线程
/// 结论:在测试方法中新启动的线程(即使设置成前台线程),默认情况下,不能阻止单元测试方法的执行结束。
/// 测试方法很可能先于新启动的线程结束运行,造成新线程没有执行完就随着测试方法线程结束而结束。
2 years ago
/// </summary>
[Fact]
public void TestRunThread_Test()
{
_output.WriteLine($"主线程Id={Thread.CurrentThread.ManagedThreadId}, 是否后台线程={Thread.CurrentThread.IsBackground}");
2 years ago
//断言:测试的启动线程为后台线程
2 years ago
Assert.True( Thread.CurrentThread.IsBackground);
}
/// <summary>
///
/// </summary>
[Fact]
public void Test1()
{
_output.WriteLine($"主线程Id={Thread.CurrentThread.ManagedThreadId}, 是否后台线程={Thread.CurrentThread.IsBackground}");
2 years ago
Thread t = new Thread(() =>
{
_output.WriteLine($"新线程Id={Thread.CurrentThread.ManagedThreadId}, 新线程名称={Thread.CurrentThread.Name}");
2 years ago
_output.WriteLine($"{Thread.CurrentThread.Name} 新线程,开始休眠");
2 years ago
Thread.Sleep(100);
_output.WriteLine($"{Thread.CurrentThread.Name} 新线程从休眠中唤醒,执行结束!");
2 years ago
})
{
Name = "FirstThread",
Priority = ThreadPriority.Normal,
IsBackground = false,
};
t.Start();
t.Join();
}
public void Dispose()
{
}
}
}