<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
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/">
	<channel>
		<title>How to Test Custom Lint Checks | Infinum</title>
		<atom:link href="https://infinum.com/blog/how-to-test-custom-lint-checks/feed/" rel="self" type="application/rss+xml" />
		<link>https://infinum.com/blog/how-to-test-custom-lint-checks/</link>
		<description>Building digital products</description>
		<lastBuildDate>Tue, 14 Apr 2026 10:32:35 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>7859https://infinum.com/uploads/2019/06/how-to-test-custom-lint-checks-0.webp</url>
				</image>
				<title>How to Test Custom Lint Checks</title>
				<link>https://infinum.com/blog/how-to-test-custom-lint-checks/</link>
				<pubDate>Thu, 27 Jun 2019 09:30:00 +0000</pubDate>
				<dc:creator>Sven Vidak</dc:creator>
				<guid isPermaLink="false">https://infinum.com/the-capsized-eight/how-to-test-custom-lint-checks/</guid>
				<description>
					<![CDATA[<p>Tests help make sure the check behaves correctly in every possible case, but can also help with debugging.</p>
<p>The post <a href="https://infinum.com/blog/how-to-test-custom-lint-checks/">How to Test Custom Lint Checks</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-182"
	 data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-blog-content js-block-blog-content">
	
<div class="block-blog-content-sidebar" data-id="es-92">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-95"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-93">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-94'
	>
	In my previous article, I’ve talked about <a href="https://infinum.com/blog/what-is-android-lint-and-how-helps-write-maintainable-code/">writing Lint checks</a> and benefits they can bring to your project. I’ve also outlined how to write custom Lint checks, but I didn’t cover how to test them. </p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-98"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-96">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-97'
	>
	Of course, you can always observe if Lint reports an error or warning if you make a mistake, but the problem arises if you have a bug in your implementation.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-101"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-99">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-100'
	>
	Tests help make sure the check behaves correctly in every possible case, but can also help with debugging.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-104"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-102">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-103'
	>
	Dependencies</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-107"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-105">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-106'
	>
	First step is to add test dependencies in your module’s <code>build.gradle</code> file:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-109"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-groovy github-light" data-language="groovy" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token">testImplementation </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">com.android.tools.lint:lint:</span><span class="token" style="color: #24292e;">$l</span><span class="token" style="color: #24292e;">i</span><span class="token" style="color: #24292e;">n</span><span class="token" style="color: #24292e;">t</span><span class="token" style="color: #24292e;">V</span><span class="token" style="color: #24292e;">e</span><span class="token" style="color: #24292e;">r</span><span class="token" style="color: #24292e;">s</span><span class="token" style="color: #24292e;">i</span><span class="token" style="color: #24292e;">o</span><span class="token" style="color: #24292e;">n</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">
</span></span><span class="line"><span class="token">testImplementation </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">com.android.tools.lint:lint-tests:</span><span class="token" style="color: #24292e;">$l</span><span class="token" style="color: #24292e;">i</span><span class="token" style="color: #24292e;">n</span><span class="token" style="color: #24292e;">t</span><span class="token" style="color: #24292e;">V</span><span class="token" style="color: #24292e;">e</span><span class="token" style="color: #24292e;">r</span><span class="token" style="color: #24292e;">s</span><span class="token" style="color: #24292e;">i</span><span class="token" style="color: #24292e;">o</span><span class="token" style="color: #24292e;">n</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-112"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-110">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-111'
	>
	<code>lintVersion</code> is defined in the same way as in the previous article – <code>gradlePluginVersion + 23.0.0</code>. At the moment of writing, it would be <code>26.4.0</code>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-115"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-113">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-114'
	>
	Basic test class</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-118"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-116">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-117'
	>
	Lint checks are tested with the JUnit framework. The only part that’s a bit different is that your class must extend <code>LintDetectorTest</code> class which will force you to specify detector and issues you want to test. In the <a href="https://infinum.com/blog/what-is-android-lint-and-how-helps-write-maintainable-code/">previous article</a>, I’ve defined all components that one Lint check has to have. I’ll use those here.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-121"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-119">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-120'
	>
	When you extend <code>LintDetectorTest</code> class, you’ll have to implement two methods: <code>getDetector</code> and <code>getIssues</code>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-123"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-kotlin github-light" data-language="kotlin" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token">class CorrectClickListenerDetectorTest </span><span class="token">: </span><span class="token" style="color: #6f42c1;">LintDetectorTest</span><span class="token">() {
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #d73a49;">override</span><span class="token"> </span><span class="token">fun getDetector</span><span class="token">() </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token">CorrectClickListenerDetector</span><span class="token">()
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #d73a49;">override</span><span class="token"> </span><span class="token">fun getIssues</span><span class="token">() </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token">listOf</span><span class="token">(ISSUE_CLICK_LISTENER)
</span></span><span class="line"><span class="token">}
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-126"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-124">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-125'
	>
	For each test, you’ll need a code sample that Lint will analyze. You can define those in any way you want (as a variable, read from file, etc.), but have in mind there are differences when it comes to Java and Kotlin.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-129"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-127">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-128'
	>
	Java code sample must be syntactically correct. For example, you can call non-existing methods on any object and you don’t have to specify imports for used classes, but parenthesis, keywords, etc. must be correct.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-131"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-kotlin github-light" data-language="kotlin" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #d73a49;">private</span><span class="token"> </span><span class="token">val </span><span class="token">incorrectMethodCallJava </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;&quot;&quot;</span><span class="token" style="color: #032f62;">
</span></span><span class="line"><span class="token" style="color: #032f62;">    public class Test {
</span></span><span class="line"><span class="token" style="color: #032f62;">        private static String s1 = &quot;Test string 1&quot;;
</span></span><span class="line"><span class="token" style="color: #032f62;">        private static String s2 = &quot;Test string 2&quot;;
</span></span><span class="line"><span class="token" style="color: #032f62;">
</span></span><span class="line"><span class="token" style="color: #032f62;">        public static void main(String[] args) {
</span></span><span class="line"><span class="token" style="color: #032f62;">            s1.setOnClickListener();
</span></span><span class="line"><span class="token" style="color: #032f62;">            s2.trim();
</span></span><span class="line"><span class="token" style="color: #032f62;">        }
</span></span><span class="line"><span class="token" style="color: #032f62;">     }
</span></span><span class="line"><span class="token" style="color: #032f62;">    </span><span class="token" style="color: #032f62;">&quot;&quot;&quot;</span><span class="token">.trimIndent</span><span class="token">()
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-134"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-132">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-133'
	>
	As you can see, there are no imports and we call <code>setOnClickListener</code> on a <code>String</code> object which does not make any sense, but Lint is cool with that.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-137"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-135">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-136'
	>
	On the other hand, when defining a Kotlin sample code, you have to make sure that the code will compile if you copy it into a real project. Since we are testing method calls on Android <code>View</code>, you have to specify import statement for the <code>View</code> class and somehow obtain instance of that class so you can call a method on it. Luckily, we don’t have to drag beloved <code>Context</code> to our test – it’s enough to have a method that takes a <code>View</code> instance as a parameter.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-139"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-kotlin github-light" data-language="kotlin" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #d73a49;">private</span><span class="token"> </span><span class="token">val </span><span class="token">incorrectMethodCallKotlin </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;&quot;&quot;</span><span class="token" style="color: #032f62;">
</span></span><span class="line"><span class="token" style="color: #032f62;">    import android.view.View
</span></span><span class="line"><span class="token" style="color: #032f62;">    class Test {
</span></span><span class="line"><span class="token" style="color: #032f62;">        fun main(view: View) {
</span></span><span class="line"><span class="token" style="color: #032f62;">            view.setOnClickListener { }
</span></span><span class="line"><span class="token" style="color: #032f62;">        }
</span></span><span class="line"><span class="token" style="color: #032f62;">    }
</span></span><span class="line"><span class="token" style="color: #032f62;">  </span><span class="token" style="color: #032f62;">&quot;&quot;&quot;</span><span class="token">.trimIndent</span><span class="token">()
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-142"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-140">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-141'
	>
	Have in mind that having import statement in the code sample does not require you to include Android SDK as a testing dependency – all dependencies you need are the two mentioned at the beginning of the article.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-145"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-143">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-144'
	>
	First test</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-148"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-146">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-147'
	>
	Each test is defined as a method annotated with <code>@Test</code> (same as any other JUnit test), It’s written as a chain of commands that tells Lint what to analyze, and what assertions to test.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-150"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-kotlin github-light" data-language="kotlin" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #6f42c1;">@Test</span><span class="token">
</span></span><span class="line"><span class="token">fun incorrectMethodUsage_shouldReportAWarning</span><span class="token">() {
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #6a737d;">//</span><span class="token" style="color: #6a737d;"> obtain Lint analyzer</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">lint</span><span class="token">()
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #6a737d;">//</span><span class="token" style="color: #6a737d;"> give it a list of files to analyze</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">.files</span><span class="token">(</span><span class="token">java</span><span class="token">(incorrectMethodCallJava))
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #6a737d;">//</span><span class="token" style="color: #6a737d;"> run analyzer</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">.run</span><span class="token">()
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #6a737d;">//</span><span class="token" style="color: #6a737d;"> make assertions</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">.expectWarningCount</span><span class="token">(</span><span class="token" style="color: #005cc5;">1</span><span class="token">)
</span></span><span class="line"><span class="token">}
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-153"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-151">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-152'
	>
	Kotlin file(s) can be analyzed in the same way, you just have to pass <code>kotlin(incorrectMethodCallKotlin)</code> as a parameter to <code>files</code> method.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-156"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-154">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-155'
	>
	More assertions</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-159"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-157">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-158'
	>
	In the previous article, I’ve defined a quick fix option for a check. Lint testing API allows you to test if the fix works.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-161"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-kotlin github-light" data-language="kotlin" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #d73a49;">private</span><span class="token"> </span><span class="token">val </span><span class="token">correctMethodCallJava </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;&quot;&quot;</span><span class="token" style="color: #032f62;">
</span></span><span class="line"><span class="token" style="color: #032f62;">    public class Test {
</span></span><span class="line"><span class="token" style="color: #032f62;">      private static String s1 = &quot;Test string 1&quot;;
</span></span><span class="line"><span class="token" style="color: #032f62;">      private static String s2 = &quot;Test string 2&quot;;
</span></span><span class="line"><span class="token" style="color: #032f62;">
</span></span><span class="line"><span class="token" style="color: #032f62;">      public static void main(String[] args) {
</span></span><span class="line"><span class="token" style="color: #032f62;">          s1.setThrottlingClickListener();
</span></span><span class="line"><span class="token" style="color: #032f62;">          s2.trim();
</span></span><span class="line"><span class="token" style="color: #032f62;">      }
</span></span><span class="line"><span class="token" style="color: #032f62;">    }
</span></span><span class="line"><span class="token" style="color: #032f62;">&quot;&quot;&quot;</span><span class="token">.trimIndent</span><span class="token">()
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">@Test</span><span class="token">
</span></span><span class="line"><span class="token">fun fix_shouldUseCorrectClickListener</span><span class="token">() {
</span></span><span class="line"><span class="token">    </span><span class="token">lint</span><span class="token">()
</span></span><span class="line"><span class="token">        </span><span class="token">.files</span><span class="token">(</span><span class="token">java</span><span class="token">(incorrectMethodCallJava))
</span></span><span class="line"><span class="token">        </span><span class="token">.run</span><span class="token">()
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #6a737d;">//</span><span class="token" style="color: #6a737d;"> check that the fix produces the same code as the one given as a second parameter</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">.checkFix</span><span class="token">(</span><span class="token" style="color: #005cc5;">null</span><span class="token">, </span><span class="token">java</span><span class="token">(correctMethodCallJava))
</span></span><span class="line"><span class="token">}
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-164"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-162">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-163'
	>
	Also, you can match exact output of your check.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-166"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-kotlin github-light" data-language="kotlin" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #d73a49;">private</span><span class="token"> </span><span class="token">val </span><span class="token">incorrectMethodCallWarning </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;&quot;&quot;</span><span class="token" style="color: #032f62;">
</span></span><span class="line"><span class="token" style="color: #032f62;">    src/Test.java:6: Warning: Use setThrottlingClickListener [UnsafeClickListener]
</span></span><span class="line"><span class="token" style="color: #032f62;">            s1.setOnClickListener();
</span></span><span class="line"><span class="token" style="color: #032f62;">            ~~~~~~~~~~~~~~~~~~~~~~~
</span></span><span class="line"><span class="token" style="color: #032f62;">    0 errors, 1 warnings
</span></span><span class="line"><span class="token" style="color: #032f62;">&quot;&quot;&quot;</span><span class="token">.trimIndent</span><span class="token">()
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">@Test</span><span class="token">
</span></span><span class="line"><span class="token">fun incorrectMethodUsage_shouldShowCorrectWarningMessage</span><span class="token">() {
</span></span><span class="line"><span class="token">    </span><span class="token">lint</span><span class="token">()
</span></span><span class="line"><span class="token">        </span><span class="token">.files</span><span class="token">(</span><span class="token">java</span><span class="token">(incorrectMethodCallJava))
</span></span><span class="line"><span class="token">        </span><span class="token">.run</span><span class="token">()
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #6a737d;">/*</span><span class="token" style="color: #6a737d;"> this check is sensitive to indentation so you might have to adjust warning variable a bit due to article formatting </span><span class="token" style="color: #6a737d;">*/</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">.expect</span><span class="token">(incorrectMethodCallWarning)
</span></span><span class="line"><span class="token">}
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-169"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-167">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-168'
	>
	And, of course, you want to check that your check won’t report any issues.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-171"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-kotlin github-light" data-language="kotlin" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #6f42c1;">@Test</span><span class="token">
</span></span><span class="line"><span class="token">fun correctMethodUsage_shouldNotShowAnyWarningMessages</span><span class="token">() {
</span></span><span class="line"><span class="token">    </span><span class="token">lint</span><span class="token">()
</span></span><span class="line"><span class="token">        </span><span class="token">.files</span><span class="token">(</span><span class="token">java</span><span class="token">(correctMethodCallJava))
</span></span><span class="line"><span class="token">        </span><span class="token">.run</span><span class="token">()
</span></span><span class="line"><span class="token">        </span><span class="token">.expectClean</span><span class="token">()
</span></span><span class="line"><span class="token">}
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-174"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-172">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-173'
	>
	A good starting point</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-177"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-175">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-176'
	>
	There are many more assertions that enable you to verify the correctness of your check (you can even check whole reports). </p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-180"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-178">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-179'
	>
	The checks in this article can cover a lot of cases which are a good starting point for every type of a check that exists. For those eager to learn more, <a href="https://gist.github.com/mister11/a9c04e35bb3083416cf9651d91f463c4">here</a> you can find tests for XML checks. That’s all folks. Happy testing.</p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/how-to-test-custom-lint-checks/">How to Test Custom Lint Checks</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>