<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Har Hung on Medium]]></title>
        <description><![CDATA[Stories by Har Hung on Medium]]></description>
        <link>https://medium.com/@hunghar174?source=rss-e2145b204896------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*yXf1Y4f2KFYI43XS</url>
            <title>Stories by Har Hung on Medium</title>
            <link>https://medium.com/@hunghar174?source=rss-e2145b204896------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 15 May 2026 19:10:20 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@hunghar174/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[isTest void testWidgets( String description, WidgetTesterCallback callback, { bool?]]></title>
            <link>https://medium.com/@hunghar174/istest-void-testwidgets-string-description-widgettestercallback-callback-bool-4e0d95ff4292?source=rss-e2145b204896------2</link>
            <guid isPermaLink="false">https://medium.com/p/4e0d95ff4292</guid>
            <dc:creator><![CDATA[Har Hung]]></dc:creator>
            <pubDate>Mon, 11 May 2026 11:04:24 GMT</pubDate>
            <atom:updated>2026-05-11T11:04:24.250Z</atom:updated>
            <content:encoded><![CDATA[<h3>isTest void testWidgets( String description, WidgetTesterCallback callback, { bool? skip, test_package.Timeout? timeout, bool semanticsEnabled = true, TestVariant&lt;Object?&gt; variant = const DefaultTestVariant(), dynamic tags, int? retry, LeakTesting? experimentalLeakTesting, }) { assert( variant.values.isNotEmpty, &#39;There must be at least one value to test in the testing variant.’, ); final TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.ensureInitialized(); final tester = WidgetTester._(binding); for (final Object? value in variant.values) { final String variationDescription = variant.describeValue(value); // IDEs may make assumptions about the format of this suffix in order to // support running tests directly from the editor (where they may have // access to only the test name, provided by the analysis server). // See https://github.com/flutter/flutter/issues/86659. final combinedDescription = variationDescription.isNotEmpty ? &#39;$description (variant: $variationDescription)&#39; : description; test( combinedDescription, () { tester._testDescription = combinedDescription; SemanticsHandle? semanticsHandle; tester._recordNumberOfSemanticsHandles(); if (semanticsEnabled) { semanticsHandle = tester.ensureSemantics(); } test_package.addTearDown(binding.postTest); return binding.runTest( () async { debugResetSemanticsIdCounter(); Object? memento; try { memento = await variant.setUp(value); binding.reset(); // TODO(ianh): the binding should just do this itself in _runTest maybeSetupLeakTrackingForTest(experimentalLeakTesting, combinedDescription); await callback(tester); } finally { await variant.tearDown(value, memento); maybeTearDownLeakTrackingForTest(); } semanticsHandle?.dispose(); }, tester._endOfTestVerifications, description: combinedDescription, ); }, skip: skip, timeout: timeout ?? binding.defaultTestTimeout, tags: tags, retry: retry, );</h3><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4e0d95ff4292" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>