diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/HardcodedContracts.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/HardcodedContracts.java
index 98a20300cd22..5386febd8d72 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/HardcodedContracts.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/HardcodedContracts.java
@@ -196,7 +196,8 @@ public class HardcodedContracts {
}
private static boolean isJunit(String className) {
- return className.startsWith("junit.framework.") || className.startsWith("org.junit.");
+ return className.startsWith("junit.framework.") || className.startsWith("org.junit.")
+ || className.equals("org.testng.AssertJUnit");
}
private static boolean isJunit5(String className) {
@@ -204,7 +205,7 @@ public class HardcodedContracts {
}
private static boolean isTestng(String className) {
- return className.startsWith("org.testng.");
+ return className.startsWith("org.testng.") && !className.equals("org.testng.AssertJUnit");
}
private static boolean isNotNullMatcher(PsiExpression expr) {
diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/AssertTestNg.java b/java/java-tests/testData/inspection/dataFlow/fixture/AssertTestNg.java
new file mode 100644
index 000000000000..d920bd710d6a
--- /dev/null
+++ b/java/java-tests/testData/inspection/dataFlow/fixture/AssertTestNg.java
@@ -0,0 +1,43 @@
+import org.jetbrains.annotations.Nullable;
+import org.testng.Assert;
+import org.testng.AssertJUnit;
+
+class AssertTestNg {
+ public void assertTestNgStyle(@Nullable String msg, @Nullable String obj, boolean x, boolean y)
+ {
+ Assert.assertNotNull(obj, msg);
+ if (msg == null) {
+ System.out.println("msg is null");
+ }
+ if (obj == null) {
+ System.out.println("obj is null");
+ }
+ Assert.assertTrue(x);
+ if (x) {
+ System.out.println("x is true");
+ }
+ Assert.assertTrue(y, msg);
+ if (y) {
+ System.out.println("x is true");
+ }
+ }
+
+ public void assertJUnitStyle(@Nullable String msg, @Nullable String obj, boolean x, boolean y)
+ {
+ AssertJUnit.assertNotNull(msg, obj);
+ if (msg == null) {
+ System.out.println("msg is null");
+ }
+ if (obj == null) {
+ System.out.println("obj is null");
+ }
+ AssertJUnit.assertTrue(x);
+ if (x) {
+ System.out.println("x is true");
+ }
+ AssertJUnit.assertTrue(msg, y);
+ if (y) {
+ System.out.println("x is true");
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/HardcodedContractsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/HardcodedContractsTest.java
index 15018ea6e785..d41e4c2bcb3c 100644
--- a/java/java-tests/testSrc/com/intellij/java/codeInspection/HardcodedContractsTest.java
+++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/HardcodedContractsTest.java
@@ -128,4 +128,24 @@ public class HardcodedContractsTest extends DataFlowInspectionTestCase {
checkHighlighting();
}
+ public void testAssertTestNg() {
+ myFixture.addClass("package org.testng;\n" +
+ "\n" +
+ "public class AssertJUnit {\n" +
+ " static public void assertTrue(String message, boolean condition) {}\n" +
+ " static public void assertTrue(boolean condition) {}\n" +
+ " static public void assertNotNull(String message, Object object) {}\n" +
+ " static public void assertNotNull(Object object) {}\n" +
+ "}");
+ myFixture.addClass("package org.testng;\n" +
+ "\n" +
+ "public class Assert {\n" +
+ " static public void assertTrue(boolean condition, String message) {}\n" +
+ " static public void assertTrue(boolean condition) {}\n" +
+ " static public void assertNotNull(Object object, String message) {}\n" +
+ " static public void assertNotNull(Object object) {}\n" +
+ "}");
+ checkHighlighting();
+ }
+
}