{"id":8641,"date":"2023-10-03T18:52:02","date_gmt":"2023-10-03T17:52:02","guid":{"rendered":"https:\/\/www.baeldung.com\/java-junit-verify-interface-contract"},"modified":"2023-10-03T18:52:02","modified_gmt":"2023-10-03T17:52:02","slug":"testing-interface-contract-in-java","status":"publish","type":"post","link":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/2023\/10\/03\/testing-interface-contract-in-java\/","title":{"rendered":"Testing Interface Contract in Java"},"content":{"rendered":"<p><img src=\"https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-8-Featured-1024x536.png\" class=\"webfeedsFeaturedVisual wp-post-image\" alt=\"\" decoding=\"async\" style=\"float: left; margin-right: 5px;\" loading=\"lazy\" srcset=\"https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-8-Featured-1024x536.png 1024w, https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-8-Featured-300x157.png 300w, https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-8-Featured-768x402.png 768w, https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-8-Featured-100x52.png 100w, https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-8-Featured.png 1200w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/p>\n<h2 id=\"bd-overview\" data-id=\"overview\">1. Overview<\/h2>\n<div class=\"bd-anchor\" id=\"overview\"><\/div>\n<p><a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-inheritance\">Inheritance<\/a> is an important concept in Java. <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-interfaces\">Interfaces<\/a> are one of the ways through which we implement the concept.<\/p>\n<p>Interfaces define a contract that multiple classes can implement. Subsequently, it&#8217;s essential to test these implementing classes to ensure they adhere to the same.<\/p>\n<p>In this tutorial, we&#8217;ll take a look at different approaches to writing <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/junit-5\">JUnit tests<\/a> for interfaces in Java.<\/p>\n<h2 id=\"bd-setup\" data-id=\"setup\">2. Setup<\/h2>\n<div class=\"bd-anchor\" id=\"setup\"><\/div>\n<p>Let&#8217;s create a basic setup to use in our different approaches.<\/p>\n<p>Firstly, we start by creating a simple interface called <em>Shape,<\/em> which has a method <em>area()<\/em>:<\/p>\n<pre><code class=\"language-java\">public interface Shape {\r\n    double area();\r\n}<\/code><\/pre>\n<p>Secondly, we define a <em>Circle<\/em> class that implements the <em>Shape<\/em> interface. It also has a method <em>circumference() <\/em>of its own:<\/p>\n<pre><code class=\"language-java\">public class Circle implements Shape {\r\n    private double radius;\r\n    Circle(double radius) {\r\n        this.radius = radius;\r\n    }\r\n    @Override\r\n    public double area() {\r\n        return 3.14 * radius * radius;\r\n    }\r\n    public double circumference() {\r\n        return 2 * 3.14 * radius;\r\n    }\r\n}<\/code><\/pre>\n<p>Lastly, we define another class, <em>Rectangle,<\/em> that implements the <em>Shape<\/em> interface. It has an additional method <em>perimeter()<\/em>:<\/p>\n<pre><code class=\"language-java\">public class Rectangle implements Shape {\r\n    private double length;\r\n    private double breadth;\r\n    public Rectangle(double length, double breadth) {\r\n        this.length = length;\r\n        this.breadth = breadth;\r\n    }\r\n    @Override\r\n    public double area() {\r\n        return length * breadth;\r\n    }\r\n    public double perimeter() {\r\n        return 2 * (length + breadth);\r\n    }\r\n}<\/code><\/pre>\n<h2 id=\"bd-test-approaches\" data-id=\"test-approaches\">3. Test Approaches<\/h2>\n<div class=\"bd-anchor\" id=\"test-approaches\"><\/div>\n<p>Now, let&#8217;s take a look at the different approaches we can follow to test the implementing classes.<\/p>\n<h3 id=\"bd-1-individual-tests-for-implementing-classes\" data-id=\"1-individual-tests-for-implementing-classes\">3.1. Individual Tests for Implementing Classes<\/h3>\n<div class=\"bd-anchor\" id=\"1-individual-tests-for-implementing-classes\"><\/div>\n<p>One of the most popular approaches is to create individual JUnit test classes for each implementation class of the interface. We&#8217;ll test both the methods for the classes &#8211;\u00a0 the one inherited as well as the one defined by the class itself.<\/p>\n<p>Initially, we create the <em>CircleUnitTest<\/em> class, with test cases for <em>area()<\/em> and <em>circumference()<\/em> methods:<\/p>\n<pre><code class=\"language-java\">@Test\r\nvoid whenAreaIsCalculated_thenSuccessful() {\r\n    Shape circle = new Circle(5);\r\n    double area = circle.area();\r\n    assertEquals(78.5, area);\r\n}\r\n@Test\r\nvoid whenCircumferenceIsCalculated_thenSuccessful(){\r\n    Circle circle = new Circle(2);\r\n    double circumference = circle.circumference();\r\n    assertEquals(12.56, circumference);\r\n}<\/code><\/pre>\n<p>In the next step, we create the <em>RectangleUnitTest<\/em> class with test cases for the <em>area()<\/em> and <em>perimeter()<\/em> methods:<\/p>\n<pre><code class=\"language-java\">@Test\r\nvoid whenAreaIsCalculated_thenSuccessful() {\r\n    Shape rectangle = new Rectangle(5,4);\r\n    double area = rectangle.area();\r\n    assertEquals(20, area);\r\n}\r\n@Test\r\nvoid whenPerimeterIsCalculated_thenSuccessful() {\r\n    Rectangle rectangle = new Rectangle(5,4);\r\n    double perimeter = rectangle.perimeter();\r\n    assertEquals(18, perimeter);\r\n}<\/code><\/pre>\n<p>As we can see from both the classes above, <strong>we can successfully test the interface methods and any additional methods the implementing classes may define.\u00a0<\/strong><\/p>\n<p>With this approach, we may have to <strong>write the same test for the interface methods repeatedly for all the implementing classes<\/strong>. As we see with individual tests, the same <em>area() <\/em>method is being tested in the two implementing classes.<\/p>\n<p>As the number of implementing classes grows, the tests are multiplied across implementations with the increase in the number of methods defined by the interface. Consequently, <strong>the code complexity and redundancy grow as well, making it difficult to maintain and change over time<\/strong>.<\/p>\n<h3 id=\"bd-2-parameterized-tests\" data-id=\"2-parameterized-tests\">3.2. Parameterized Tests<\/h3>\n<div class=\"bd-anchor\" id=\"2-parameterized-tests\"><\/div>\n<p>To overcome this, let&#8217;s create a <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/parameterized-tests-junit-5\">parameterized test<\/a>, which takes as input the instances of the different implementation classes:<\/p>\n<pre><code class=\"language-java\">@ParameterizedTest\r\n@MethodSource(&quot;data&quot;)\r\nvoid givenShapeInstance_whenAreaIsCalculated_thenSuccessful(Shape shapeInstance, double expectedArea){\r\n    double area = shapeInstance.area();\r\n    assertEquals(expectedArea, area);\r\n}\r\nprivate static Collection&lt;Object[]&gt; data() {\r\n    return Arrays.asList(new Object[][] {\r\n      { new Circle(5), 78.5 },\r\n      { new Rectangle(4, 5), 20 }\r\n    });\r\n}<\/code><\/pre>\n<p>With this approach, <strong>we&#8217;ve successfully tested the interface contract for the implementing classes. <\/strong><\/p>\n<p><strong>However, we don&#8217;t have the flexibility to define anything additional than what has been defined in the interface<\/strong>. Hence, we may still need to test the implementing classes in some other form. It may require testing them in their own JUnit classes.<\/p>\n<h3 id=\"bd-3-using-a-base-test-class\" data-id=\"3-using-a-base-test-class\">3.3. Using a Base Test Class<\/h3>\n<div class=\"bd-anchor\" id=\"3-using-a-base-test-class\"><\/div>\n<p>With the previous two approaches, we don&#8217;t have enough flexibility to extend the test cases in addition to verifying the interface contract. At the same time, we also want to avoid code redundancy. So, let&#8217;s look at another approach that can address both concerns.<\/p>\n<p>In this approach, we define a base test class. This <em>abstract<\/em> test class defines the methods to be tested, i.e., the interface contract. Subsequently, the test classes of the implementing classes can extend this abstract test class to build upon the tests.<\/p>\n<p>We&#8217;ll be <strong>using the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-template-method-pattern\">template method pattern<\/a><\/strong> wherein we define the algorithm to test the <em>area()\u00a0<\/em>method in the base test class, and then, the test sub-classes are only required to provide the implementations to be used in the algorithm.<\/p>\n<p>Let&#8217;s define the base test class to test the <em>area()<\/em> method:<\/p>\n<pre><code class=\"language-java\">public abstract Map&lt;String, Object&gt; instantiateShapeWithExpectedArea();\r\n@Test\r\nvoid givenShapeInstance_whenAreaIsCalculated_thenSuccessful() {\r\n    Map&lt;String, Object&gt; shapeAreaMap = instantiateShapeWithExpectedArea();\r\n    Shape shape = (Shape) shapeAreaMap.get(&quot;shape&quot;);\r\n    double expectedArea = (double) shapeAreaMap.get(&quot;area&quot;);\r\n    double area = shape.area();\r\n    assertEquals(expectedArea, area);\r\n}<\/code><\/pre>\n<p>Now, let&#8217;s create the JUnit test class for the <em>Circle<\/em> class:<\/p>\n<pre><code class=\"language-java\">@Override\r\npublic Map&lt;String, Object&gt; instantiateShapeWithExpectedArea() {\r\n    Map&lt;String,Object&gt; shapeAreaMap = new HashMap&lt;&gt;();\r\n    shapeAreaMap.put(&quot;shape&quot;, new Circle(5));\r\n    shapeAreaMap.put(&quot;area&quot;, 78.5);\r\n    return shapeAreaMap;\r\n}\r\n@Test\r\nvoid whenCircumferenceIsCalculated_thenSuccessful(){\r\n    Circle circle = new Circle(2);\r\n    double circumference = circle.circumference();\r\n    assertEquals(12.56, circumference);\r\n}<\/code><\/pre>\n<p>Finally, the test class for the <em>Rectangle<\/em> class:<\/p>\n<pre><code class=\"language-java\">@Override\r\npublic Map&lt;String, Object&gt; instantiateShapeWithExpectedArea() {\r\n    Map&lt;String,Object&gt; shapeAreaMap = new HashMap&lt;&gt;();\r\n    shapeAreaMap.put(&quot;shape&quot;, new Rectangle(5,4));\r\n    shapeAreaMap.put(&quot;area&quot;, 20.0);\r\n    return shapeAreaMap;\r\n}\r\n@Test\r\nvoid whenPerimeterIsCalculated_thenSuccessful() {\r\n    Rectangle rectangle = new Rectangle(5,4);\r\n    double perimeter = rectangle.perimeter();\r\n    assertEquals(18, perimeter);\r\n}<\/code><\/pre>\n<p>In this approach, we&#8217;ve overridden the <em>instantiateShapeWithExpectedArea()<\/em> method. In this method, we&#8217;ve provided the <em>Shape<\/em> instance as well as the expected area. These parameters can be used by the test methods defined in the base test class to execute the tests.<\/p>\n<p>To summarize, with this approach, <strong>implementing classes can have tests for their own methods and inherit the tests for the interface methods.<\/strong><\/p>\n<h2 id=\"bd-conclusion\" data-id=\"conclusion\">4. Conclusion<\/h2>\n<div class=\"bd-anchor\" id=\"conclusion\"><\/div>\n<p>In this article, we explored the different ways of writing JUnit tests to validate the interface contract.<\/p>\n<p>First, we took a look at how defining individual test classes for each implementing class is straightforward. However, this may lead to a lot of redundant code.<\/p>\n<p>Then, we explored how using parameterized tests can help us avoid redundancy, but it&#8217;s less flexible.<\/p>\n<p>Finally, we saw the base test class approach, which addresses the concerns in the other two approaches.<\/p>\n<p>As always, the source code is available <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/github.com\/eugenp\/tutorials\/tree\/master\/testing-modules\/junit-5-advanced\">over on GitHub<\/a>.<\/p>\n<p><Img align=\"left\" border=\"0\" height=\"1\" width=\"1\" alt=\"\" style=\"border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;\" hspace=\"0\" src=\"https:\/\/feeds.feedblitz.com\/~\/i\/797352698\/0\/baeldung\"><\/p>\n<div style=\"clear:both;padding-top:0.2em;\"><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/797352698\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/797352698\/baeldung,https%3A%2F%2Fwww.baeldung.com%2Fwp-content%2Fuploads%2F2021%2F09%2FJava-8-Featured-1024x536.png\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/797352698\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/797352698\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/797352698\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/java-junit-verify-interface-contract#respond\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>&#160;<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/java-junit-verify-interface-contract\/feed\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a>&#160;<\/div>\n\n<h2><b>Commercials Cooperation Advertisements:<\/b><\/h2>\r\n<p><br>(1) IT Teacher IT Freelance<br> <\/p>\r\n<a href=https:\/\/itteacheritfreelance.hk\/wordpress><img src=http:\/\/gamefootballmobileanimeiphone.com\/wp-content\/uploads\/2023\/09\/ITTeacherITFreelance-Website.png alt=IT\u96fb\u8166\u88dc\u7fd2 java\u88dc\u7fd2 \u70ba\u5927\u5bb6\u914d\u5c0d\u96fb\u8166\u88dc\u7fd2,IT freelance, \u79c1\u4eba\u8001\u5e2b, PHP\u88dc\u7fd2,CSS\u88dc\u7fd2,XML,Java\u88dc\u7fd2,MySQL\u88dc\u7fd2,graphic design\u88dc\u7fd2,\u4e2d\u5c0f\u5b78ICT\u88dc\u7fd2,\u4e00\u5c0d\u4e00\u79c1\u4eba\u88dc\u7fd2\u548cFreelance\u81ea\u7531\u5de5\u4f5c\u914d\u5c0d\u3002\/><\/a><p><a href=https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/findteacher>\u7acb\u523b\u8a3b\u518a\u53ca\u5831\u540d\u96fb\u8166\u88dc\u7fd2\u8ab2\u7a0b\u5427! <\/a><br>\r\n\r\n\u7535\u5b50\u8ba1\u7b97\u673a -\u6559\u80b2 -IT \u96fb\u8166\u73ed\u201d ( IT\u96fb\u8166\u88dc\u7fd2 ) \u63d0\u4f9b\u4e00\u500b\u65b9\u4fbf\u7684\u7535\u5b50\u8ba1\u7b97\u673a \u6559\u80b2\u5e73\u53f0, \u70ba\u5927\u5bb6\u914d\u5c0d\u4fe1\u606f\u6280\u672f, \u96fb\u8166 \u8001\u5e2b, IT freelance \u548c programming expert. \u8b93\u5927\u5bb6\u65b9\u4fbf\u5730\u5c31\u80fd\u627e\u5230\u5408\u9069\u7684\u96fb\u8166\u88dc\u7fd2, \u96fb\u8166\u73ed, \u5bb6\u6559, \u79c1\u4eba\u8001\u5e2b.  <br>\r\n\r\nWe are a education and information platform which you can find a IT private tutorial teacher or freelance. <br>\r\n\r\nAlso we provide different information about information technology, Computer, programming, mobile, Android, apple, game, movie, anime, animation\u2026 \r\n<\/p>\n<p><br>(2) ITSec<br> <\/p><a href=https:\/\/itsec.vip><img src=http:\/\/gamefootballmobileanimeiphone.com\/wp-content\/uploads\/2023\/09\/ITSec-Main-Promotion-Image.png alt= https:\/\/itsec.vip\/\r\nSecure Your Computers from Cyber Threats and mitigate risks with professional services to defend Hackers.  \r\nITSec provide IT Security and Compliance Services, including IT Compliance Services, Risk Assessment, IT Audit, Security Assessment and Audit, ISO 27001 Consulting and Certification, GDPR Compliance Services, Privacy Impact Assessment (PIA), Penetration test, Ethical Hacking, Vulnerabilities scan, IT Consulting, Data Privacy Consulting, Data Protection Services, Information Security Consulting, Cyber Security Consulting, Network Security Audit, Security Awareness Training.\/><\/a> \r\n<br><br> \r\n<p><a href=https:\/\/itsec.vip>www.ITSec.vip<\/a> <br> <br> \r\n<p><a href=https:\/\/sraa.com.hk>www.Sraa.com.hk<\/a> <br> <br> \r\n<p><a href=https:\/\/itsec.hk>www.ITSec.hk<\/a> <br> <br> \r\n<p><a href=https:\/\/penetrationtest.hk>www.Penetrationtest.hk<\/a> <br> <br> \r\n<p><a href=https:\/\/itseceu.uk>www.ITSeceu.uk<\/a> <br> <br> \r\nSecure Your Computers from Cyber Threats and mitigate risks with professional services to defend Hackers. <br><br>\r\nITSec provide IT Security and Compliance Services, including IT Compliance Services, Risk Assessment, IT Audit, Security Assessment and Audit, ISO 27001 Consulting and Certification, GDPR Compliance Services, Privacy Impact Assessment (PIA), Penetration test, Ethical Hacking, Vulnerabilities scan, IT Consulting, Data Privacy Consulting, Data Protection Services, Information Security Consulting, Cyber Security Consulting, Network Security Audit, Security Awareness Training. \r\n<br><br>Contact us right away. <br><br>Email (Prefer using email to contact us): <br>SalesExecutive@ITSec.vip<\/p>","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/www.baeldung.com\/wp-content\/uploads\/2021\/09\/Java-8-Featured-1024x536.png\" class=\"webfeedsFeaturedVisual wp-post-image\" alt=\"\"><\/p>\n<p>Explore several ways of writing JUnit tests to validate interface contracts in Java.<\/p>\n<div><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/797352698\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\"><\/a>\u00a0<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/797352698\/baeldung,https%3A%2F%2Fwww.baeldung.com%2Fwp-content%2Fuploads%2F2021%2F09%2FJava-8-Featured-1024x536.png\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\"><\/a>\u00a0<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/797352698\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\"><\/a>\u00a0<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/797352698\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\"><\/a>\u00a0<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/797352698\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\"><\/a>\u00a0<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/java-junit-verify-interface-contract#respond\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>\u00a0<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/java-junit-verify-interface-contract\/feed\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a>\u00a0<\/div>\n","protected":false},"author":259,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[22],"tags":[61,122,127,129,124,128,125,132,131,133,126,130,123,66,94,88,97,56,64,65,60,112,40,75,95,104,33,120,105,101,98,115,30,29,41,86,70,69,68,72,71,26,118,108,87,46,55,48,52,54,51,50,83,62,58,57,4088,4089,109,35,59,63,85,79,82,96,80,27,81,114,44,42,43,45,38,39,110,117,100,111,116,73,89,90,92,91,93,84,78,37,102,34,36,77,67,74,99,113,119,28,121,32,47,49,53,103,31,76],"class_list":["post-8641","post","type-post","status-publish","format-standard","hentry","category-mobile","tag-airpods","tag-anime","tag-anime-characters","tag-anime-cosplay","tag-anime-edits","tag-anime-merchandise","tag-anime-movies","tag-anime-news","tag-anime-recommendations","tag-anime-reviews","tag-anime-series","tag-anime-streaming","tag-animes","tag-app-store","tag-app-store-samsung","tag-appgallery","tag-appgallery-oneplus","tag-apple","tag-apple-music","tag-apple-tv","tag-apple-watch","tag-bbc-sport","tag-best-mobile-games","tag-bixby","tag-bixby-xiaomi","tag-champions-league","tag-cyberpunk","tag-cyberpunk-2077","tag-fantasy-football","tag-fifa","tag-football","tag-formula-1","tag-fortnite","tag-free-fire","tag-free-mobile-games","tag-freebuds-pro","tag-galaxy-a52","tag-galaxy-note-20","tag-galaxy-s21","tag-galaxy-watch-4","tag-galaxy-z-fold-3","tag-game","tag-games","tag-golf","tag-harmonyos","tag-how-to-backup-iphone","tag-how-to-factory-reset-iphone","tag-how-to-reset-iphone","tag-how-to-restore-iphone","tag-how-to-unlock-iphone","tag-how-to-unlock-iphone-5","tag-how-to-unlock-iphone-6","tag-huawei","tag-ios","tag-ipad","tag-iphone","tag-java-interfaces","tag-junit","tag-live-soccer","tag-lol","tag-macbook","tag-macos","tag-mate-40-pro","tag-mi-11-lite","tag-mi-home-security-camera-basic-1080p","tag-mi-home-security-camera-basic-1080p-huawei","tag-mi-smart-band-6","tag-minecraft","tag-miui","tag-mlb-scores","tag-mobile-game-design","tag-mobile-game-development","tag-mobile-game-marketing","tag-mobile-game-monetization","tag-mobile-games","tag-mobile-gaming","tag-nba-scores","tag-nba-standings","tag-nfl","tag-nfl-scores","tag-nhl-scores","tag-one-ui","tag-oneplus","tag-oneplus-9-pro","tag-oneplus-buds-pro","tag-oneplus-nord-ce-5g","tag-oxygenos","tag-p40-pro-plus","tag-poco-x3-pro","tag-pokemon","tag-premier-league","tag-pubg","tag-pubg-mobile","tag-redmi-note-10-pro","tag-samsung","tag-samsung-pay","tag-soccer","tag-sports","tag-steam","tag-steeam","tag-top-10-anime","tag-valorant","tag-when-do-the-iphone-7-come-out","tag-when-does-the-iphone-7-come-out","tag-when-is-the-iphone-7-coming-out","tag-world-cup","tag-xbox-series-x","tag-xiaomi"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/posts\/8641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/comments?post=8641"}],"version-history":[{"count":2,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/posts\/8641\/revisions"}],"predecessor-version":[{"id":8883,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/posts\/8641\/revisions\/8883"}],"wp:attachment":[{"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/media?parent=8641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/categories?post=8641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gamefootballmobileanimeiphone.com\/index.php\/wp-json\/wp\/v2\/tags?post=8641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}