Нулевое утверждение в запущенной группе тестов - PullRequest
0 голосов
/ 22 мая 2018

Я новичок в модульном тестировании.Использую TestNG и Mockito для модульного тестирования.У меня есть 8 тестов, когда я запускаю тесты один за другим, все работает нормально.После этого я добавил все эти методы в один класс.После запуска тестового класса я получил нулевое исключение Assertion.Я не могу найти причину.Вот мой код.

public class TestLoginController {

@Mock
DBResourseLoader dbResourceLoader;

@Mock
MessageLoader messageLoader;

@Mock
Logger logger;

@Mock
Properties properties;

@Mock
Properties databaseProperties;

@Mock
DBConnector connector;

@Mock
Connection connection;

@Mock
PropertyConfigurator propertyConfigurator;

@InjectMocks
LoginBean loginBean;

@Mock
CommonDAO commonDAO;

@Mock 
PreparedStatement preparedStatement;

@Mock
ResultSet resultSet;




@BeforeClass
public void setup() {
    try {

        MockitoAnnotations.initMocks(this);
        when(messageLoader.getMessageStatement("")).thenReturn("");
        when(dbResourceLoader.getJdbcDatasource()).thenReturn(properties);
        when(dbResourceLoader.getLogger()).thenReturn(databaseProperties);
        when(dbResourceLoader.getLogger(Logger.class)).thenReturn(logger);

        when(connector.getConnection(true)).thenReturn(connection);
    }catch(Exception e) {
        e.printStackTrace();
    }
}


@BeforeMethod
public void setBeforeValues() {


}

@Test
public void negTestCheckIsReportCreatedByCustomerReportFlagByNo() {
    try {
        when(commonDAO.getLoginControllerValue("LOGIN_CONTROLLER")).thenReturn("NO");
        reset(commonDAO);
        assertNotEquals(false, loginBean.checkIsReportCreatedByCustomer("1234@1234.com"));
    }catch(Exception e) {
        e.printStackTrace();
    }
}

@Test
public void posTestCheckIsReportCreatedByCustomerReportFlagByNo() {
    try {

        when(commonDAO.getLoginControllerValue("LOGIN_CONTROLLER")).thenReturn("NO");
        assertEquals(true, loginBean.checkIsReportCreatedByCustomer("1234@1234.com"));

    }catch(Exception e) {
        e.printStackTrace();
    }
}

@Test
public void negTestCheckIsReportCreatedByCustomerByReportFlagYes() {
    try {
        when(commonDAO.getLoginControllerValue("LOGIN_CONTROLLER")).thenReturn("YES");
        when(commonDAO.getCustomerReportCreationValue("1234@gmail.com")).thenReturn(false);
        assertNotEquals(true, loginBean.checkIsReportCreatedByCustomer("1234@1234.com"));
    }catch(Exception e) {
        e.printStackTrace();
    }
}

@Test
public void posTestCheckIsReportCreatedByCustomerByReportFlagYes() {
    try {
        when(commonDAO.getLoginControllerValue("LOGIN_CONTROLLER")).thenReturn("YES");
        when(commonDAO.getCustomerReportCreationValue("1234@1234.com")).thenReturn(true);
        assertEquals(true, loginBean.checkIsReportCreatedByCustomer("1234@1234.com"));
    }catch(Exception e) {
        e.printStackTrace();
    }
}

@Test
public void negTestCheckLoginAlertReportFlagByNo() {
    try {
        when(commonDAO.getLoginControllerValue("LOGIN_CONTROLLER")).thenReturn("NO");
        assertNotEquals(false, loginBean.checkIsReportCreatedByCustomer("1234@1234.com"));
    }catch(Exception e) {
        e.printStackTrace();
    }
}

@Test
public void posTestLoginAlertCustomerReportFlagByNo() {
    try {
                    when(commonDAO.getLoginControllerValue("LOGIN_CONTROLLER")).thenReturn("NO");
        assertEquals(true, loginBean.checkIsReportCreatedByCustomer("1234@1234.com"));

    }catch(Exception e) {
        e.printStackTrace();
    }
}

@Test
public void negTestLoginAlertByReportFlagYes() {
    try {
        when(commonDAO.getLoginControllerValue("LOGIN_CONTROLLER")).thenReturn("YES");
        when(commonDAO.getCustomerReportCreationValue("1234@gmail.com")).thenReturn(false);
        assertNotEquals(true, loginBean.checkIsReportCreatedByCustomer("1234@1234.com"));
    }catch(Exception e) {
        e.printStackTrace();
    }
}

@Test
public void posTestCheckLoginAlertByReportFlagYes() {
    try {
        when(commonDAO.getLoginControllerValue("LOGIN_CONTROLLER")).thenReturn("YES");
        when(commonDAO.getCustomerReportCreationValue("1234@1234.com")).thenReturn(true);
        assertEquals(true, loginBean.checkIsReportCreatedByCustomer("1234@1234.com"));
    }catch(Exception e) {
        e.printStackTrace();
    }
}

}

И исключение составляет

FAILED: negTestCheckLoginAlertReportFlagByNo
java.lang.AssertionError: null
at org.testng.Assert.fail(Assert.java:93)
at org.testng.Assert.assertNotEquals(Assert.java:897)
at org.testng.Assert.assertNotEquals(Assert.java:902)
at 
com.test.login.controller.TestLoginController.
negTestCheckLoginAlertReportFlagByNo(TestLoginController.java:146)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.
invokeMethod(MethodInvocationHelper.java:108)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:661)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
at org.testng.internal.TestMethodWorker.
invokeTestMethods(TestMethodWorker.java:126)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:744)
at org.testng.TestRunner.run(TestRunner.java:602)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
at org.testng.TestNG.runSuites(TestNG.java:1144)
at org.testng.TestNG.run(TestNG.java:1115)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Если тест negTestCheckLoginAlertReportFlagByNo действительно успешен сам по себе, то на его результаты могут влиять другие тесты, и порядок выполнения теста следует контролировать, используя либо приоритет, либо зависимость механизм TestNG.


В качестве примечания, я бы посчитал трудным для чтения следующее выражение, потому что его легко можно неправильно интерпретировать:

assertNotEquals(false, loginBean.checkIsReportCreatedByCustomer("1234@1234.com"));

Я бы предложил использовать методы assertTrue, assertFalse в этом случае, поскольку они немного более очевидны.

Итак, либо:

assertFalse(loginBean.checkIsReportCreatedByCustomer("1234@1234.com"));

, если проверка должна вернуть false, либо:

assertTrue(loginBean.checkIsReportCreatedByCustomer("1234@1234.com"));

если он должен вернуть true.

0 голосов
/ 22 мая 2018

Таким образом, ошибочное утверждение находится в negTestCheckLoginAlertReportFlagByNo.Все, что null говорит вам, это то, что вы не предоставили пользовательское сообщение.

Проблема в том, что возврат от

loginBean.checkIsReportCreatedByCustomer("1234@1234.com")

был false.

Почему мы не можем помочь?Теперь вы должны определить, является ли тест ошибочным или тестируемый код ведет себя неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...