Pas d'équivalent en python (et c'est bien dommage)
javac file1.class file2.class
java main_file
Manifest-Version: 1.0
Main-Class: ClassWithMainMethod
Class-Path: useful jars
javac [-cp external jars] file1, file2...
java [-cp external jars] main_file
jar cmf path.to.MANIFEST jar_name.jar [file1.class, file2.class/*.class]
java jar [path.to.jar]
mvn -B archetype:generate -DgroupId=com.mycompany.app
-DartifactId=my-app
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
project
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- $package
| `-- App.java
`-- test
`-- java
`-- $package
`-- AppTest.java
Contient
4.0.0
fr.ensai.app
my-app
1
1.8
1.8
junit
junit
4.12
jar
test
true
mvn wrapper:wrapper
# Unix
./mvnw clean install
# Windows
mvnw.cmd clean install
Source : commitstrip Lien
“En informatique, un test désigne une procédure de vérification partielle d'un système. Son objectif principal est d'identifier un nombre maximum de comportements problématiques du logiciel. Il permet ainsi, dès lors que les problèmes identifiés seront corrigés, d'en augmenter la qualité.
D'une manière plus générale, le test désigne toutes les activités qui consistent à rechercher des informations quant à la qualité du système afin de permettre la prise de décisions.
Un test ressemble à une expérience scientifique. Il examine une hypothèse exprimée en fonction de trois éléments : les données en entrée, l'objet à tester et les observations attendues. Cet examen est effectué sous conditions contrôlées pour pouvoir tirer des conclusions et, dans l'idéal, être reproduit ”
Plus on teste tôt et plus les tests sont efficaces et peu coûteux !
Pratique qui consiste à écrire les tests AVANT de coder
Par Xarawn — Travail
personnel
,
CC
BY-SA 4.0, Lien
class StandardTests {
@BeforeAll
static void initAll() {
}
@BeforeEach
void init() {
}
@Test
void succeedingTest() {
}
@Test
void failingTest() {
fail("a failing test");
}
@Test
@Disabled("for demonstration purposes")
void skippedTest() {
// not executed
}
@Test
void abortedTest() {
assumeTrue("abc".contains("Z"));
fail("test should have been aborted");
}
@AfterEach
void tearDown() {
}
@AfterAll
static void tearDownAll() {
}
}
Deux structures courantes et équivalentes
class StandardTests {
@Test
void dummyTest() {
// GIVEN
int integer1 = 1;
int integer2 = 3
// WHEN
int sum = integer1+integer2
// THEN
assertEquals(4, sum)
}
}
@Test
public void addToppingOk() {
// GIVEN
Cake cake = new Cake(Ingredient.VANILLA,4);
// WHEN
cake.addTopping(Ingredient.SPARKLE);
// THEN
assertEquals(1, cake.getToppings().size());
assertTrue(cake.getToppings().contains(Ingredient.SPARKLE)); ;
}
if ( i >= 0 ) {
return "foo";
} else {
return "bar";
}
mute en
if ( i > 0 ) {
return "foo";
} else {
return "bar";
}
On veux s'assurer qu'au moins un des tests échoue
mvn test
org.apache.logging.log4j
log4j-api
2.17.1
org.apache.logging.log4j
log4j-core
2.17.1
%d %p %c{1.} [%t] %m%n
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class App
{
private static Logger logger = LogManager.getRootLogger();
public static void main( String[] args )
{
logger.trace("msg de trace");
logger.debug("msg de debogage");
logger.info("msg d'info");
logger.warn("msg de warn");
logger.error("msg d'erreur");
logger.fatal("msg fatal");
}
}
version: 1
formatters:
simple:
format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: simple
stream: ext://sys.stdout
loggers:
simpleExample:
level: DEBUG
handlers: [console]
propagate: no
root:
level: DEBUG
handlers: [console]
import logging.config
import yaml
with open('./logging.yml', 'r') as stream:
config = yaml.load(stream, Loader=yaml.FullLoader)
logging.config.dictConfig(config)
# create logger
logger = logging.getLogger('simpleExample')
# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')