<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="https://publishpress.com/"
	>

<channel>
	<title>KIF Archives - Tomoshare</title>
	<atom:link href="https://blog.tomosia.com.vn/tag/kif/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.tomosia.com.vn/tag/kif/</link>
	<description>Kênh chia sẻ kiến thức Tomosia Việt Nam</description>
	<lastBuildDate>Tue, 03 Oct 2023 07:19:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.tomosia.com.vn/wp-content/uploads/2023/09/cropped-icon-32x32.png</url>
	<title>KIF Archives - Tomoshare</title>
	<link>https://blog.tomosia.com.vn/tag/kif/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Automation Test for iOS (part 1)</title>
		<link>https://blog.tomosia.com.vn/automation-test-for-ios-part-1/</link>
					<comments>https://blog.tomosia.com.vn/automation-test-for-ios-part-1/#comments</comments>
		
		<dc:creator><![CDATA[Vo Phuong]]></dc:creator>
		<pubDate>Tue, 03 Oct 2023 07:16:09 +0000</pubDate>
				<category><![CDATA[IOS]]></category>
		<category><![CDATA[Automation Test]]></category>
		<category><![CDATA[KIF]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=299</guid>

					<description><![CDATA[<p>Đối với công việc lâp trình phần mềm thì Unit Test và UI Test là những việc vô&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/automation-test-for-ios-part-1/">Automation Test for iOS (part 1)</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Đối với công việc lâp trình phần mềm thì Unit Test và UI Test là những việc vô cùng quan trọng trong việc bảo đảm 1 phần mềm đạt chất lượng tốt. Bài viết này, mình chỉ tập trung chủ yếu vào UI Test. Với lập trình viên iOS thì việc viết UI Test đã có sự support từ Apple với XCTest framework. Nhưng sau khi làm thử với XCTest framework thì thấy nó khó cho việc viết UITest cho chúng ta. Nên mình đã tìm hiểu được 1 framework cho việc viết UITest là <a href="https://github.com/kif-framework/KIF"><strong>KIF framewok</strong></a></p>



<h2 id="1-cai-dat-kif" class="wp-block-heading">1. Cài đặt KIF</h2>



<p>Điều đầu tiên, để sử dụng được KIF thì chúng ta cần tạo target cho việc test của chúng ta. Ở đây, KIF không sử dụng&nbsp;<strong>iOS UI Testing Bundle</strong>&nbsp;mà sử dụng&nbsp;<strong>iOS Unit Testing Bundle</strong>.Nên trong trường hợp bạn nào đã có unit test ở trong project thì cần chọn 1 trong 2 target để chạy test.</p>



<p>Chọn dự án của bạn trong Xcode và nhấp vào &#8220;Add Target&#8221; ở góc dưới bên trái của trình soạn thảo. Chọn iOS -&gt; Test -&gt; iOS Unit Testing Bundle. Hãy cung cấp cho nó một tên như &#8220;Acceptance Tests&#8221;, &#8220;UI Tests&#8221;, hoặc cái gì đó cho thấy ý định của quá trình test của bạn.</p>



<p>Acceptance Test Target của bạn được tạo và sẽ có thêm 1 file đi cùng với nó, ex: &#8220;Acceptance_Tests.swift&#8221; khớp với tên target. Hãy xoá nó đi.</p>



<h3 id="1-1-cai-dat-voi-pod" class="wp-block-heading">1.1 Cài đặt với Pod</h3>



<p>Khi Test Target của bạn đã được thiết lập, thêm đoạn mã dưới đây vào Podfile của bạn. Sử dụng đúng target cần cài đặt KIF</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#282A36"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="target 'Your Apps' do
  ...
end

target 'Acceptance Tests' do
  pod 'KIF', :configurations =&gt; ['Debug']
end" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F8F8F2">target &#39;Your Apps&#39; </span><span style="color: #FF79C6">do</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">...</span></span>
<span class="line"><span style="color: #F8F8F2">end</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F8F8F2">target &#39;Acceptance Tests&#39; </span><span style="color: #FF79C6">do</span></span>
<span class="line"><span style="color: #F8F8F2">  pod &#39;KIF&#39;, </span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2">configurations </span><span style="color: #FF79C6">=&gt;</span><span style="color: #F8F8F2"> [&#39;Debug&#39;]</span></span>
<span class="line"><span style="color: #F8F8F2">end</span></span></code></pre></div>



<p>Sau khi chạy <code>pod install</code> thì công việc tiếp theo là làm theo <strong>Cấu hình Test Target</strong> ở bên dưới để cấu hình thích hợp cho nó</p>



<h3 id="1-2-cai-voi-static-library" class="wp-block-heading">1.2 Cài với static library</h3>



<p>Để cài đặt KIF, bạn cần liên kết static library libKIF trực tiếp vào ứng dụng của bạn. Tải xuống nguồn từ&nbsp;<a href="https://github.com/kif-framework/KIF">KIF</a>&nbsp;và làm theo hướng dẫn dưới đây.</p>



<p>Chúng tôi sẽ sử dụng một dự án đơn giản làm ví dụ và bạn có thể tìm thấy nó trong Documentation/Examples/Testable Swift trong reposity của KIF.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="825" height="453" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-1.png" alt="" class="wp-image-300" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-1.png 825w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-1-300x165.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-1-768x422.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-1-380x209.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-1-800x439.png 800w" sizes="(max-width: 825px) 100vw, 825px" /></figure>



<h4 id="them-kif-vao-du-an" class="wp-block-heading">Thêm KIF vào dự án</h4>



<p>Bước đầu tiên là thêm dự án KIF vào thư mục con của ./Frameworks/KIF của dự án. Nếu dự án của bạn sử dụng Git để kiểm soát phiên bản, bạn có thể sử dụng submodules để cập nhật trong tương lai dễ dàng hơn:</p>



<pre class="wp-block-preformatted">cd /path/to/MyApplicationSource
mkdir Frameworks
git submodule add https://github.com/kif-framework/KIF.git Frameworks/KIF</pre>



<h4 id="them-kif-vao-workspace" class="wp-block-heading">Thêm KIF vào Workspace</h4>



<p>Hãy để dự án của bạn biết về KIF bằng cách thêm dự án KIF vào không gian làm việc cùng với dự án chính của bạn. Tìm KIF.xcodeproj trong Finder và kéo nó vào Project Navigator (⌘1).</p>



<figure class="wp-block-image size-full"><img decoding="async" width="825" height="453" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-2.png" alt="" class="wp-image-301" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-2.png 825w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-2-300x165.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-2-768x422.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-2-380x209.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-2-800x439.png 800w" sizes="(max-width: 825px) 100vw, 825px" /></figure>



<h3 id="1-3-cau-hinh-test-target" class="wp-block-heading">1.3 Cấu hình Test Target</h3>



<p>Bây giờ, bạn đã có test target cho việc viết UI Test của bạn. Tiếp theo là thêm các thư viện cần thiết cho dự án, chúng ta chọn trong <strong>Project Navigator</strong> và vào Test Target mà bạn đã tạo ra, chọn tab <strong>&#8220;Build Phases&#8221;</strong>. Trong phần <strong>&#8220;Link Binary With Libraries&#8221;</strong>, hãy nhấn nút &#8220;+&#8221;. Trong bảng xuất hiện, chọn &#8220;libKIF.a&#8221; và nhấp vào <strong>&#8220;Add&#8221;</strong>. Lặp lại quá trình cho <strong>CoreGraphics.framework</strong> và <strong>QuartzCore.framework</strong> . KIF yêu cầu IOKit.framework, nhưng nó không nằm trong các khuôn khổ hệ thống. Để liên kết đến nó, thêm &#8220;-framework IOKit&#8221; vào <strong>&#8220;Other Linker Flags&#8221;</strong>.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-3.png" alt="" class="wp-image-302" style="width:679px;height:373px" width="679" height="373" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-3.png 825w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-3-300x165.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-3-768x422.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-3-380x209.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-3-800x439.png 800w" sizes="(max-width: 679px) 100vw, 679px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="825" height="453" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-4.png" alt="" class="wp-image-303" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-4.png 825w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-4-300x165.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-4-768x422.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-4-380x209.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-4-800x439.png 800w" sizes="auto, (max-width: 825px) 100vw, 825px" /></figure>



<p>KIF được viết bằng Objective C nên các bạn cần thêm <code>-ObjC</code> vào <strong>&#8220;Other Linker Flags&#8221;</strong> trong Build Settings của Test Target</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="825" height="453" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-5.png" alt="" class="wp-image-304" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-5.png 825w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-5-300x165.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-5-768x422.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-5-380x209.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-5-800x439.png 800w" sizes="auto, (max-width: 825px) 100vw, 825px" /></figure>



<p>Ở phần này mình chỉ giới thiệu về việc thêm KIF framework vào dự án của chúng. Ở phần sau mình sẽ demo về KIF framework</p>



<p></p>



<p></p>
<p>The post <a href="https://blog.tomosia.com.vn/automation-test-for-ios-part-1/">Automation Test for iOS (part 1)</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/automation-test-for-ios-part-1/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
