<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=Unit_Testing</id>
	<title>Unit Testing - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=Unit_Testing"/>
	<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=Unit_Testing&amp;action=history"/>
	<updated>2026-04-06T04:28:02Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.foofun.cn//index.php?title=Unit_Testing&amp;diff=388&amp;oldid=prev</id>
		<title>Zhang3：创建页面，内容为“'''单元测试（Unit testing）''' 意味着，除了实现代码之外，你还要编写一个 “测试驱动程序（test driver）”，该 “测试驱动程序” 将实现代码进行一组试验，检查返回结果的正确性。 请注意，这是在开发/测试期间完成的-“测试驱动程序” 不随发布代码一起提供。  == 出发点想法是... == * 如果以后更改实现代码中的内容，则测试驱动程序会告诉你结果…”</title>
		<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=Unit_Testing&amp;diff=388&amp;oldid=prev"/>
		<updated>2022-02-06T12:51:57Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“&amp;#039;&amp;#039;&amp;#039;单元测试（Unit testing）&amp;#039;&amp;#039;&amp;#039; 意味着，除了实现代码之外，你还要编写一个 “测试驱动程序（test driver）”，该 “测试驱动程序” 将实现代码进行一组试验，检查返回结果的正确性。 请注意，这是在开发/测试期间完成的-“测试驱动程序” 不随发布代码一起提供。  == 出发点想法是... == * 如果以后更改实现代码中的内容，则测试驱动程序会告诉你结果…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''单元测试（Unit testing）''' 意味着，除了实现代码之外，你还要编写一个 “测试驱动程序（test driver）”，该 “测试驱动程序” 将实现代码进行一组试验，检查返回结果的正确性。 请注意，这是在开发/测试期间完成的-“测试驱动程序” 不随发布代码一起提供。&lt;br /&gt;
&lt;br /&gt;
== 出发点想法是... ==&lt;br /&gt;
* 如果以后更改实现代码中的内容，则测试驱动程序会告诉你结果是否保持不变 (回归测试 regression test);&lt;br /&gt;
* 如果收到错误报告，则不仅要修复实现代码，还要更新测试驱动程序，以便在不失败单元测试的情况下永远不会再次引入此错误。&lt;br /&gt;
&lt;br /&gt;
单元测试是提高代码可靠性和正确性的好方法。 但是，它要求要测试的代码实际上 “可以” 在测试驱动程序的控制下运行。 你应该很容易看出这在哪里工作变得棘手。 虽然 “应该” 可以在 “测试床 testbed”上测试驱动程序中测试大多数内核功能，但真正 “繁杂” 的东西 (例如中断处理，进程调度或内存管理) 可能无法进行单元测试。&lt;br /&gt;
&lt;br /&gt;
== 替代/附加选项: 运行时自检 ==&lt;br /&gt;
&lt;br /&gt;
* 在激活内存提供程序之前，请向它索取内存，记录地址，释放内存并再次索取内存。 在这种情况下，大多数分配器都将返回相同的地址。&lt;br /&gt;
&lt;br /&gt;
* 如果你的内存管理器具有一些 “空闲区域合并” 功能，请分配尽可能多的 “小” 区域，然后释放所有 “奇数” 区域，然后释放所有 “均匀” 区域 (强调考察合并功能)。 完成后，请尝试分配一个与最初获得的所有小区域的集合一样大的区域。&lt;br /&gt;
&lt;br /&gt;
* 在启动许多线程之前，请启动一个线程，该线程将发出 [[Semaphores|信号量]] 的信号，然后等待该信号量。 如果你的调度程序 (和信号量) 工作正常，则只能在其他线程已执行的情况下继续运行。&lt;br /&gt;
&lt;br /&gt;
* 启用中断 (尤其是计时器) 后，轮询 “tick计数器”，直到它计数完成 (确认计时器中断工作正常)&lt;br /&gt;
&lt;br /&gt;
由于许多测试可能会挂起，因此建议你在知道测试是否成功之前，先打印正在运行的测试状况。&lt;br /&gt;
&lt;br /&gt;
[[Category:Troubleshooting]]&lt;/div&gt;</summary>
		<author><name>Zhang3</name></author>
	</entry>
</feed>