Condivisione della tecnologia

Introduzione alle specifiche di progetto/codice e ad Apifox

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Sommario

Sommario

1. Specifiche del progetto:

(1) Struttura del progetto:

(2) Oggetto dei dati trasmessi

2. Specifiche del codice:

(1) Convenzione di denominazione del database:

(2) Specifiche delle annotazioni:

(3) Specifiche di denominazione:

(4) Specifiche front-end e back-end:

(5) Altre specifiche:

3. Utilizzo di Apifox:

(1) Download e installazione:

(2) Crea un nuovo progetto e invita i tuoi compagni di squadra:

(3) Specifiche di scrittura per documenti di interfaccia

4. Funzione di debug (deve conoscere il backend)

5. Categoria di prova

6. Cose da notare:

(Una persona non può dominare il paese!!!)


1. Specifiche del progetto:

(1) Struttura del progetto:

Quelli specifici sono:

(1) Livello di entità: il livello di entità memorizza entità di oggetti specifici, corrispondenti agli oggetti nel database.

(2) Livello DAO: (può essere suddiviso in due livelli (livello di interfaccia di dao e livello di implementazione di dao)) è il livello che interagisce con il database, coinvolgendo alcune operazioni di aggiunta, cancellazione, modifica e query del database.

(3) Livello di servizio (può essere suddiviso in due livelli (livello di interfaccia di servizio e livello di implementazione del servizio)): principalmente responsabile della progettazione logica dell'applicazione dei moduli aziendali.

(4) Livello controller: il livello controller è responsabile del controllo di processi specifici del modulo aziendale. Il livello controller è responsabile dell'interazione front-end e back-end, accettando richieste front-end, chiamando il livello di servizio e ricevendo i dati restituiti. il livello di servizio e infine restituendo pagine e dati specifici al client.

(5) Livello util: il livello strumento inserisce classi di strumenti comunemente utilizzate. Ad esempio, alcuni metodi comuni possono essere scritti come una funzione util, quindi il codice complessivo può essere semplificato.

(6) Livello di eccezione: è possibile scrivere un livello di eccezione di restituzione unificato.

(7) Livello filtro: livello filtro, come il filtraggio uniforme dell'autenticazione dell'identità. Se il filtro non passa, sarà solo in modalità ospite.

(2) Oggetto dei dati trasmessi

DTO è la struttura dati inviata dalla richiesta front-end.

VO è la risposta restituita dal backend in risposta alla richiesta inviata dal frontend.

PO è la corrispondenza effettiva tra l'entità dell'oggetto e la tabella degli oggetti del database.

BO è l'entità oggetto nel processo di elaborazione aziendale.

2. Specifiche del codice:

Per favore, chiamalo in inglese, non in Pinyin cinese.

Sii facile da capire, non fantasioso.

Usa nomi a gobba invece di nomi ordinari.

Usa interruzioni di riga a intervalli e non scrivere in paragrafi lunghi.

Sii annotato, non individualista.

Specifica di codifica del linguaggio Java - Specifica di codifica del linguaggio Java (versione cinese) - Documentazione online - Materiali di programmazione JAVA Niubi Station (javanb.com)icona-default.png?t=N7T8http://doc.javanb.com/code-conventions-for-the-java-programming-language-zh/index.html#312

Non utilizzare parole chiave, parole riservate, ecc. che hanno significati speciali nello stesso Java! ! !

(1) Convenzione di denominazione del database:

(1) Il nome della tabella è univoco e più nomi di tabella non possono utilizzare lo stesso nome.

(2) Il nome della tabella dovrebbe essere una combinazione di lettere minuscole e trattini bassi. Cerca di evitare l'uso di lettere maiuscole o caratteri speciali. Usa "user_info" come questo, o "tbl_user" o "tbl_user_info".

(3) Non entrare in conflitto con le parole chiave,Per disabilitare le parole riservate, come like, desc, range, match, delay, ecc., fare riferimento alle parole riservate ufficiali di MySQL.

(4) Nome del campo del database: è composto da 26 lettere inglesi (con distinzione tra maiuscole e minuscole) più il carattere di sottolineatura '_', come "user_id", "user_name", "user_password", "user_register_time", "user_login_time".

(5) Specifiche della chiave primaria ed esterna:

Il nome dell'indice della chiave primaria è pk_field name; il nome dell'indice univoco è uk_field name; il nome dell'indice ordinario è idx_field name;
illustrare: pk_ è la chiave primaria; uk_ è la chiave univoca; idx_ è l'abbreviazione di indice.

Chiave primaria: pk_+nome tabella
Per esempio:pk_main
Chiave esterna: fk_+nome tabella slave+_+nome tabella principale
Per esempio:fk_sub_main

(6) Il tipo decimal è decimale e float e double sono vietati.
(7) Tre campi necessari per la tabella: id, create_time, update_time.

(2) Specifiche delle annotazioni:

(1) Annotazione della classe:

Le annotazioni della classe (Class) vengono utilizzate principalmente per dichiarare a cosa serve la classe, nonché alcune informazioni come il creatore, la data di creazione, la versione, il nome del pacchetto, ecc.:

/**
* @versione: V1.0
* @autore: fendo
* @className: utente
* @packageName: utente
* @description: questa è la classe utente
* @dati: 2024-07-01 12:20
 **/

(2) Annotazione del metodo (costruttore):

Per i commenti a riga singola all'interno del metodo, iniziare una nuova riga sopra l'istruzione commentata e utilizzare // comment. Utilizzare /* */ per commenti su più righe all'interno dei metodi
I commenti dovrebbero essere allineati con il codice. Tutti i metodi astratti (compresi i metodi nelle interfacce) devono essere annotati con Javadoc. Oltre ai valori restituiti e alle descrizioni delle eccezioni dei parametri, devono anche indicare cosa fa il metodo e quali funzioni implementa.Le annotazioni dei metodi (costruttore) possono essere utilizzate anche per dichiarare parametri, ritorni e altre informazioni della classe:

/**
* @autore: fendo
* @methodsName: aggiungiUtente
* @descrizione: aggiungi un utente
* @parametro: xxxx
* @return: String
* @lancia:
*/

(3) Commenti sul blocco di codice: spiega lo scopo di una determinata parte del codice

/**
* Istanziare un utente
* xxxxxx
 */
Utente utente=nuovo utente();

(4) Commenti a frase singola: commenta il tuo codice individuale

Utente user=new User(); //Istanzia un utente

(3) Specifiche di denominazione:

Assegna un nome in modo che gli altri possano capirlo, chiamalo in maiuscolo cammello e fai distinzione tra maiuscole e minuscole.

(1) Il nome della classe utilizza lo stile UpperCamelCase:
Ad esempio: UserController, FileController, BookService
(2) I nomi dei metodi, i nomi dei parametri, le variabili membro e le variabili locali utilizzano tutti lo stile lowerCamelCase.
Ad esempio: getUserName(), userLogin(), getMessage();
(3) La denominazione costante dovrebbe essere tutta in maiuscolo e le parole dovrebbero essere separate da trattini bassi. Cerca di esprimere la semantica in modo completo e chiaro e non pensare che il nome sia troppo lungo.
Ad esempio: MAX_STOCK_COUNT / CACHE_EXPIRED_TIME
(4) Il nome della classe astratta inizia con Abstract o Base; il nome della classe di eccezione termina con Exception. Il nome della classe di test inizia con il nome della classe da testare e termina con Test.
(5) I nomi dei pacchetti dovrebbero essere uniformemente minuscoli e dovrebbe esserci solo una parola inglese con semantica naturale tra i punti separatori.Utilizzare i nomi dei pacchetti in modo uniforme Numero dispari forma
formula, ma se il nome della classe ha un significato plurale, il nome della classe può utilizzare la forma plurale.
(6) Convenzione di denominazione del metodo del livello servizio/DAO:
1) Il metodo per ottenere un singolo oggetto ha il prefisso get.
2) I metodi per ottenere più oggetti hanno il prefisso list e terminano con il plurale, come ad esempio: listObjects
3) Il metodo per ottenere valori statistici è preceduto dal conteggio.
4) Il metodo di inserimento ha il prefisso salva/inserisci.
5) Il metodo di eliminazione ha il prefisso rimuovi/elimina.
6) Il metodo modificato ha il prefisso update.
(7) Convenzione di denominazione del modello di dominio:
1) Oggetto dati: xxxDO, xxx è il nome della tabella dati.
2) Oggetto del trasferimento dati: xxxDTO, xxx è il nome relativo al settore aziendale.
3) Oggetto visualizzato: xxxVO, xxx è generalmente il nome della pagina web.
(8) Tra tutti gli oggetti della classe di confezionamento di numeri interi Confronto di valori , tutti utilizzano il metodo uguale per confrontare.
illustrare: Per Intero var = ?in da -128 a 127 L'assegnazione tra oggetti interi viene generata in IntegerCache.cache e gli oggetti esistenti verranno riutilizzati. I valori interi in questo intervallo possono essere giudicati direttamente utilizzando ==, ma tutti i dati al di fuori di questo intervallo verranno generati nell'heap
Usare oggetti esistenti è una grossa trappola. Si consiglia di utilizzare il metodo uguale per il giudizio.
(9) Per giudicare l'equivalenza tra numeri in virgola mobile, i tipi di dati di base non possono essere confrontati utilizzando == e i tipi di dati racchiusi non possono essere giudicati utilizzando uguali. Il confronto dell'uguaglianza BigDecimal dovrebbe utilizzare il metodo compareTo() anziché il metodo equals()
Esempio positivo:
(1) Specificare un intervallo di errore Se la differenza tra due numeri in virgola mobile rientra in questo intervallo, vengono considerati uguali.
galleggiante UN = 1,0 °F - 0,9 °F ;
galleggiante B = 0,9 °F - 0,8 °F ;
galleggiante diff = 1e-6F ;
Se ( Matematica . addominali ( UN - B ) < diff ) {
Sistema . fuori . stampa ( "VERO" );
}
(2) Utilizzare BigDecimal per definire il valore, quindi eseguire operazioni con numeri in virgola mobile.
GrandeDecimale a = nuovo GrandeDecimale ( "1.0" );
Grande decimale b = nuovo GrandeDecimale ( "0.9" );
Grande decimale c = nuovo GrandeDecimale ( "0.8" );
Grande decimale x = UN . sottrarre ( B );
Grande decimale y = B . sottrarre ( C );
Se ( X . Paragonare a ( e ) == 0) {
Sistema . fuori . stampa ( "VERO" );
}
tipo di identificatoreRegole di denominazioneesempio
Pacchetti Il prefisso di un nome di pacchetto univoco è sempre composto da lettere ASCII minuscole ed è un nome di dominio di primo livello, solitamente com, edu, gov, mil, net, org o il codice inglese a due caratteri che identifica il paese specificato dalla normativa del 1981. Norma ISO3166. Le parti successive del nome del pacchetto variano in base alle convenzioni di denominazione interne delle diverse organizzazioni. Tali convenzioni di denominazione possono utilizzare la composizione di nomi di directory specifici per distinguere dipartimenti, progetti, macchine o nomi di accesso.com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.formaggio
Classi Regole di denominazione: il nome della classe è un sostantivo, utilizzando maiuscole e minuscole, con la prima lettera di ogni parola in maiuscolo. Cerca di mantenere i nomi delle classi concisi e descrittivi. Utilizzare parole complete, evitare abbreviazioni (a meno che l'abbreviazione non sia più ampiamente utilizzata, come URL, HTML)classe Raster;
classe ImageSprite;
InterfacceRegole di denominazione: le regole dei casi sono simili ai nomi delle classiinterfaccia RasterDelegate;
interfaccia Memorizzazione;
Metodi Il nome del metodo è un verbo, in maiuscolo/minuscolo, con la prima lettera della prima parola minuscola e la prima lettera delle parole successive maiuscola.Denominazione del caso del cammellocorrere();
correre veloce();
ottieniSfondo();
Variabili Fatta eccezione per i nomi delle variabili, tutte le istanze, comprese le classi e le costanti di classe, sono in maiuscolo/minuscolo, con la prima lettera della prima parola minuscola e la prima lettera delle parole successive maiuscola. I nomi delle variabili non dovrebbero iniziare con un carattere di sottolineatura o con il simbolo del dollaro, sebbene ciò sia sintatticamente consentito.
I nomi delle variabili dovrebbero essere brevi e descrittivi. I nomi delle variabili dovrebbero essere scelti in modo che siano facili da ricordare, cioè per indicare il loro scopo.

Elenco<User> lista degli utenti;

Stringa nomeutente;

Costanti Le dichiarazioni delle costanti di classe e delle costanti ANSI devono essere scritte tutte in maiuscolo, con le parole separate da trattini bassi. (Cerca di evitare costanti ANSI, che possono facilmente causare errori)intero finale statico MIN_WIDTH = 4;
statico finale int MAX_WIDTH = 999;
statico finale int GET_THE_CPU = 1;

(4) Specifiche front-end e back-end:

(1) Metodo di richiesta: la definizione delle operazioni specifiche è la seguente:
a) GET: ottiene risorse dal server. (può essere visualizzato come un'operazione selezionata)
b) POST: crea una nuova risorsa sul server. (può essere considerata un'operazione di inserimento)
c) PUT: aggiorna le risorse sul server. (può essere visto come un'operazione di aggiornamento)
d) DELETE: Elimina le risorse dal server. (può essere considerata un'operazione di eliminazione)
(2) Informazioni sul reso richieste:
  • code:Codice di stato http
    • Se sono presenti ulteriori errori da te definiti, puoi anche prendere in considerazione l'utilizzo di codici di errore personalizzati.
  • message: Informazioni sulla descrizione del testo corrispondente
    • Se si verifica un errore, vengono visualizzate informazioni specifiche sull'errore.
    • In caso contrario, l'operazione ha esito positivo e l'elaborazione generalmente semplificata restituisce OK.
  • data
    • stringa json corrispondente ai dati
      • in caso divettore, allora lo strato più esterno corrispondente è[]Dilist
      • in caso dioggetto, allora lo strato più esterno corrispondente è{}Didict
  1. {
  2. "code": 200,
  3. "message": "new user has created",
  4. "data": {
  5. "id": "user-4d51faba-97ff-4adf-b256-40d7c9c68103",
  6. "firstName": "crifan",
  7. "lastName": "Li",
  8. "password": "654321",
  9. "phone": "13511112222",
  10. "createdAt": "2016-10-24T20:39:46",
  11. "updatedAt": "2016-10-24T20:39:46"
  12. ......
  13. }
  14. }

(3) Codice di stato della risposta

Errore:

  • 1xx (codice di stato informativo): Indica che la richiesta ricevuta è in fase di elaborazione.
  • 2xx (codice di stato di successo) : Indica che la richiesta è stata elaborata normalmente. 200 significa che la richiesta è stata restituita correttamente.
  • 3xx (codice di stato reindirizzamento): è necessaria un'azione di follow-up per completare questa richiesta.
  • 4xx (codice stato errore cliente) : indica che la richiesta contiene un errore di sintassi o non può essere completata. 400, 404, 401, 403 sono tutti errori causati dal front-end durante l'invio delle richieste. Il front-end deve prima verificare il problema, altrimenti potrebbe esserci un errore nella scrittura del back-end.
  • 5xx (codice di stato di errore del server) : si è verificato un errore durante l'elaborazione della richiesta da parte del server. Problemi di backend, potrebbero essere generate eccezioni, errori del server, ecc.

2XX successi


200 ok (richiesta andata a buon fine)
204 nessun contenuto (la richiesta ha avuto successo, ma non è stato restituito alcun risultato)
206 contenuto parziale (il client richiede una parte della risorsa, il server risponde con successo e restituisce un intervallo di risorse)


Reindirizzamento 3XX


301 sposta in modo permanente (reindirizzamento permanente)
302 trovati (reindirizzamento temporaneo)
303 vedi altro (indica che poiché esiste un altro URI per la risorsa corrispondente alla richiesta, dovrebbe essere utilizzato GET
Metodo diretto ad ottenere la risorsa richiesta)
304 non modificato (indica che quando il client utilizza l'accesso condizionato a una risorsa, il server trova la risorsa, ma le condizioni della richiesta non soddisfano le condizioni. Non ha nulla a che fare con il reindirizzamento)
Reindirizzamento temporaneo 307 (stesso significato di 302)


Errore client 4XX


400 bad request (c'è un errore di sintassi nel messaggio di richiesta)
401 non autorizzato (richiede autenticazione (primo reso) o autenticazione non riuscita (secondo reso))
403 proibito (la richiesta è stata respinta dal server)
404 non trovato (la risorsa richiesta non può essere trovata sul server)


Errore del server 5XX


500 errore interno del server (si è verificato un errore quando il server ha eseguito la richiesta)
503 servizio non disponibile (il server è sovraccarico o inattivo per manutenzione e non può gestire la richiesta)

(5) Altre specifiche:

(1) Quando una richiesta HTTP trasmette contenuto attraverso il corpo, la lunghezza deve essere controllata. Dopo aver superato la lunghezza massima, si verificherà un errore nell'analisi del back-end.
illustrare: Il limite predefinito di nginx è 1 MB e il limite predefinito di Tomcat è 2 MB. Quando è necessario trasferire contenuti di dimensioni maggiori, è possibile aumentare il limite lato server.
(2) Non utilizzare return nei blocchi finalmente
illustrare: Dopo che l'istruzione return nel blocco try è stata eseguita con successo, non ritorna immediatamente, ma continua a eseguire l'istruzione nel blocco final. Se c'è un'istruzione return qui, tornerà direttamente qui, scartando spietatamente il punto di ritorno nel prova a bloccare.
(3) Negli scenari aziendali Dopo aver lanciato un'eccezione ed essere stato scoperto Se è necessario tornare indietro Assicurati di ripristinare manualmente le transazioni.
(4) È possibile utilizzare i log per registrare informazioni, Utilizzare il framework di registrazione (SLF4J) JCL—Jakarta Commons Logging) API dentro.

3. Utilizzo di Apifox:

(1) Download e installazione:

Collegamento: fare clic sul collegamento per scaricare direttamente apifox (basta scaricare l'ultima versione). Apifox: una piattaforma di collaborazione integrata per documentazione API, debug, mocking e test. Ha funzioni come la gestione dei documenti dell'interfaccia, il debug dell'interfaccia, Mock e test automatizzati e l'efficienza dello sviluppo dell'interfaccia, dei test e del debug congiunto è aumentata di 10 volte. Il miglior strumento di gestione dei documenti di interfaccia e strumento di test di automazione dell'interfaccia.icona-default.png?t=N7T8Italiano: https://apifox.com/

(2) Crea un nuovo progetto e invita i tuoi compagni di squadra:

1. Crea il tuo team e crea un nuovo progetto:

Invita i tuoi compagni di squadra

2. Crea una nuova interfaccia e crea un nuovo modello dati:

(1) Determinare qual è la richiesta (POST, GET, PUT, DELETE):

(2) L'ambiente di test deve essere unificato e gli URL in ambienti diversi sono diversi:

(3) I parametri della richiesta sono configurati:

Quali parametri sono configurati? Fornire esempi di parametri, nomi cinesi e descrizioni dei parametri.

(4) La risposta deve essere configurata:

Ad esempio, è necessario specificare il tipo di informazioni restituite nei diversi stati e devono esserci esempi di successo ed esempi di eccezioni (per comodità del front-end).

  1. {
  2. "code": 200,
  3. "message": "登入成功",
  4. "data": {
  5. "user_id": 27,
  6. "user_name": "孟霞",
  7. "user_password": "123456",
  8. "user_age": "15",
  9. "user_photo": "http://dummyimage.com/400x400",
  10. "user_last_time": "1996-12-11 09:03:49",
  11. "user_indentity": "messager",
  12. "user_birthday": "2024-02-23"
  13. }
  14. }

(5) Il modello dati può essere creato:

È possibile creare diversi modelli di dati, il che è molto comodo per restituire i campi di risposta e utile anche per il front-end per visualizzare i campi dati.

(3) Specifiche di scrittura per documenti di interfaccia

Le specifiche di scrittura e i dettagli specifici di apifox.

Guida rapida di Apifox |. Documentazione della guida di Apifoxicona-default.png?t=N7T8https://apifox.com/help/

(1) Dovrebbe esserci un'introduzione all'inizio del documento dell'interfaccia API. Questa sezione può includere quanto segue:

  • Il nome e il numero di versione dell'interfaccia API
  • Funzione e scopo dell'interfaccia API
  • Scopi e principi di progettazione delle interfacce API
  • Ambito applicabile e limitazioni dell'interfaccia API

Lo scopo di questa parte è consentire ai lettori di comprendere la situazione di base e le informazioni di base dell'interfaccia API.

(2) Elenco delle interfacce

Successivamente, nel documento dell'interfaccia API, dobbiamo elencare tutte le interfacce. Ciascuna interfaccia dovrebbe contenere le seguenti informazioni:

  • Nome e descrizione dell'interfaccia
  • Metodo di richiesta (GET, POST, PUT, DELETE, ecc.)
  • Percorso della richiesta (URL)
  • Parametri della richiesta (compresi i parametri della query e i parametri del corpo)
  • Esempio di richiesta (esempio completo che può includere intestazioni e corpo della richiesta)
  • Codice di stato e descrizione della risposta
  • Parametri di risposta (inclusi parametri di intestazione e parametri di corpo)
  • Esempio di risposta (esempio completo che può includere intestazioni e corpo della risposta)

Lo scopo di questa sezione è consentire ai lettori di comprendere rapidamente le informazioni di base di ciascuna interfaccia e di utilizzare correttamente le interfacce in base agli esempi contenuti nel documento.

(3) Descrizione dei parametri di richiesta e di risposta

Dopo l'elenco delle interfacce, dobbiamo dettagliare i parametri di richiesta e i parametri di risposta per ciascuna interfaccia. Questa sezione dovrebbe includere le seguenti informazioni:

  • Nome e descrizione del parametro
  • Tipi e formati dei parametri
  • Se è obbligatorio e valore predefinito
  • Esempio di parametro

Per i tipi e formati di parametri, è possibile utilizzare tipi e formati di dati standard oppure definire tipi e formati di dati personalizzati in base a circostanze specifiche. Se i valori richiesti e quelli predefiniti devono essere determinati in base alla situazione reale.

(4) Descrizione del codice errore

Quando si utilizza l'interfaccia API, a volte si verifica un errore. In questo caso, è necessario restituire un codice di errore per spiegare il tipo e la causa dell'errore. Pertanto, nella documentazione dell'interfaccia API, dobbiamo specificare tutti i possibili codici di errore. Questa sezione dovrebbe includere le seguenti informazioni:

  • Codice errore e descrizione
  • Tipi di errore e cause
  • Esempio di codice errore restituito dall'interfaccia

Lo scopo di questa sezione è che il lettore comprenda tutti i possibili tipi e cause di errore e sia in grado di gestire correttamente gli errori in base agli esempi nella documentazione.

4. Funzione di debug (deve conoscere il backend)

Ti insegna come eseguire il debug in Java in 2 minuti [Java in IDEA]_Come eseguire il debug nei progetti Java senza casi - Blog CSDNicona-default.png?t=N7T8Italiano: https://blog.csdn.net/qq_43436117/article/details/113859737

5. Categoria di prova

(1) Operazioni specifiche:

Definire una classe di test

suggerimento:

Nome della classe di test: nome della classe testata Test CalculatorTest
Nome del pacchetto: xx.xx.xx.test cn.itcast.test
Definire metodi di test: può essere eseguito in modo indipendente

suggerimento:

Nome del metodo: nome del metodo di test testAdd()
Valore restituito: vuoto
Elenco parametri: parametri vuoti
Aggiungi @Test al metodo

Importa l'ambiente di dipendenza Junit

risultato del giudizio:

Rosso: fallito
verde: successo
Generalmente utilizziamo il metodo statico assertEquals(expected,actual) nella classe Assert per gestire i risultati attesi e i risultati di output

Assert.assertEquals(3, risultato);

I due parametri sono: valore atteso valore risultato del programma

Perché utilizzare Assert.assertEquals(previsto, effettivo) per elaborare i risultati dei test?

Perché stabiliamo che il rosso rappresenta il fallimento e il verde rappresenta la correttezza. Quando utilizziamo un metodo di test per testare il metodo di addizione di un computer, restituiamo solo questo risultato (assumendo che non si verifichi alcuna eccezione). Se inseriamo 1 e 3, ci aspettiamo di ottenere il risultato 4, ma ciò che produciamo è 2 e ciò che ci aspettiamo di ottenere è 4. Il risultato ottenuto in questo momento non soddisfa le nostre aspettative, ma il risultato corrente è ancora verde (che rappresenta corretto), non è corretto? In questo momento, possiamo utilizzare il metodo assertEquals di Assert alla fine per confrontare il valore atteso e il valore del risultato restituito dal programma. Se sono uguali, sarà verde e se non sono uguali, sarà rosso. Questa volta soddisfa la nostra definizione di verde e rosso?

  1. package cn.itcast.test;
  2. import cn.itcast.junit.Calculator;
  3. import org.junit.Assert;
  4. import org.junit.Test;
  5. public class CalculatorTest {
  6. /**
  7. * 测试add方法
  8. */
  9. @Test
  10. public void testAdd(){
  11. Calculator c = new Calculator();
  12. int a = 1, b = 2;
  13. int result = c.add(1, 2);
  14. Assert.assertEquals(3, result);
  15. }
  16. /**
  17. * 测试sub方法
  18. */
  19. @Test
  20. public void testSub(){
  21. Calculator c = new Calculator();
  22. int a = 1, b = 2;
  23. int result = c.sub(1, 2);
  24. Assert.assertEquals(-1, 2);
  25. }
  26. }

@Prima
Aggiungi @Before prima di un metodo di test e diventa un metodo di inizializzazione. Questo metodo verrà eseguito automaticamente prima dell'esecuzione di tutti i metodi di test. Viene generalmente utilizzato per l'applicazione delle risorse.

@Dopo
Aggiungi @After prima di un metodo di test e diventerà un metodo di rilascio delle risorse, che verrà eseguito automaticamente dopo l'esecuzione di tutti i metodi di test.

Il metodo decorato con @Before verrà eseguito prima dell'esecuzione del metodo di test.

Il metodo decorato con @After verrà eseguito dopo l'esecuzione del metodo di test.

I metodi modificati con @Before o @After verranno eseguiti indipendentemente dal fatto che si verifichi il metodo di prova.

(2) Genera automaticamente i plug-in della classe Test

Plugin consigliati per la generazione automatica di unit test per progetti Java - Tencent Cloud Developer Community - Tencent Cloud (tencent.com)icona-default.png?t=N7T8https://cloud.tencent.com/developer/article/1910893

6. Cose da notare:

(1) Quando scrivi il documento di interfaccia sul back-end, dovrebbe essere scritto in modo chiaro e chiaro in modo che il tuo front-end possa capirlo. Dovrebbe essere scritto in modo standardizzato. Non scriverlo in modo che tu possa capirlo da solo Il nome riscritto e la risposta dell'interfaccia con il valore predefinito devono essere scritti correttamente.

(2) Oltre a ciò che viene insegnato, puoi imparare altre cose da solo, come la registrazione della verifica e-mail, l'accesso con codice di verifica, c3p0, crittografia MD5, registri di registro, stile dei risultati, ecc.

(3) Anche la scrittura del codice deve essere standardizzata e la logica deve essere rigorosa;

(4) Il front-end e il back-end devono cooperare bene. Non lasciare che il back-end faccia le sue cose senza dire una parola al front-end. Anche la risposta interattiva del front-end e del back-end fa parte della valutazione, e rappresenta una parte importante. L'interfaccia che hai scritto non può essere eseguita solo tramite apifox. Sono presenti errori quando viene presentata nella pagina front-end specifica ? Ci sono problemi logici, ecc. Potrebbe essere necessario prenderli in considerazione.

(Una persona non può dominare il paese!!!)

(5) Durante l'analisi della domanda, stabilisci le funzioni e le interfacce che desideri eseguire. Se hai eseguito alcune funzioni ma il front-end non le ha eseguite, puoi inviarle se le cose che hanno fatto richiedono il tuo back-end interfacce/dati, se non hai scritto, rifletti attentamente e comunica di più.

Puoi confrontare progetti che funzionano davvero o qualcosa di simile, come un sito web di shopping. Quindi dovresti confrontare con Taobao le interfacce back-end che questo sito Web potrebbe avere, i moduli funzionali che potrebbe avere e i dettagli specifici.

(6) Non perseguire ciecamente di più, sii logico e ragionevole e impara a semplificare le parti che possono essere semplificate. Ma deve essere garantito anche il numero base di interfacce e il volume del codice. (Le interfacce che abbiamo scritto originariamente erano sostanzialmente più di 40)