Ik heb:
package com.darlik.test;
import org.junit.Assert;
public class Test {
public static void main(String[] args) {
assertTrue(1, 2);
}
}
pakket met org.junit is ingesteld en werkt, maar in lijn met assertTrue heb ik een fout:
De methode assertTrue(int, int) is niet gedefinieerd voor het type Test
Waarom? Ik gebruik Eclipse.
Antwoord 1, autoriteit 100%
assertTrue
is gebaseerd op een enkele booleaanse voorwaarde. Bijvoorbeeld
assertTrue(1 == 2);
U moet de verklaring statisch importeren om te gebruiken
import static org.junit.Assert.assertTrue;
Typisch echter wordt assertEquals
gebruikt bij het vergelijken van 2 parameters, bijv.
public class MyTest {
@Test
public void testAssert() throws Exception {
assertEquals(1, 2);
}
}
Antwoord 2, autoriteit 35%
Van het document: assetTrue(boolean)of assetTrue(String, boolean )als je een bericht wilt toevoegen.
AssertTrue beweert dat een voorwaardewaar is, u moet nog steeds een dergelijke voorwaarde coderen voordat deze tijdens runtime beoordeeldwordt.
Antwoord 3, autoriteit 35%
Je moet de klasse specificeren die die methode definieert:
Assert.assertTrue(condition);
Bovendien roep je de methode aan met 2 parameters, wat nergens op slaat. assertTrue
verwacht een enkele booleaanse uitdrukking.
Hoewel je dit ook kunt doen door een statische import te gebruiken:
import static org.junit.Assert.*;
waardoor je het in plaats daarvan kunt aanroepen als assertTrue(condition);
.
Antwoord 4
Probeer assertThat beter met matchers. Bekijk deze blog erover https://objectpartners.com/2013/09/18/the-benefits-of-using-assetthat-over-other-asset-methods-in-unit-tests/
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
....
@Test
public void testNum() {
assertThat(repo.getNum(), is(equalTo(111)));
}
Antwoord 5
Verwijder het bestand module-info.javaals dat in het project aanwezig is. Het is niet nodig en wordt alleen gebruikt als u het ingebouwde modulesysteem van Java gebruikt.