java代碼測試
『壹』 有了java代碼,如何測試
你這說的太籠統了,應該具體些。
有了Java代碼之後
1、可以在代碼中寫些測試的方法,把你想要驗證的東西,輸出看一下。
2、可以用Debug的形式,跟蹤代碼執行,驗證程序的邏輯是否正確。
3、利用JUnit寫斷言,測試結果
『貳』 怎麼寫Java測試代碼
可以用main函數和JUnit來寫測試代碼。main是最早使用的,但是現在更流行的測試工具是JUnit。
JUnit是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源於Kent Beck的sUnit的xUnit家族中最為成功的一個。 JUnit有它自己的JUnit擴展生態圈。多數Java的開發環境都已經集成了JUnit作為單元測試的工具。
下面是一些具體的編寫測試代碼的技巧或較好的實踐方法:
1. 不要用TestCase的構造函數初始化Fixture,而要用setUp()和tearDown()方法。
2. 不要依賴或假定測試運行的順序,因為JUnit利用Vector保存測試方法。所以不同的平台會按不同的順序從Vector中取出測試方法。
3. 避免編寫有副作用的TestCase。例如:如果隨後的測試依賴於某些特定的交易數據,就不要提交交易數據。簡單的回滾就可以了。
4. 當繼承一個測試類時,記得調用父類的setUp()和tearDown()方法。
5. 將測試代碼和工作代碼放在一起,一邊同步編譯和更新。(使用Ant中有支持junit的task.)
6. 測試類和測試方法應該有一致的命名方案。如在工作類名前加上test從而形成測試類名。
7. 確保測試與時間無關,不要依賴使用過期的數據進行測試。導致在隨後的維護過程中很難重現測試。
8. 如果你編寫的軟體面向國際市場,編寫測試時要考慮國際化的因素。不要僅用母語的Locale進行測試。
9. 盡可能地利用JUnit提供地assert/fail方法以及異常處理的方法,可以使代碼更為簡潔。
10.測試要盡可能地小,執行速度快。
11.不要硬性規定數據文件的路徑。
12.利用Junit 的自動異常處理書寫簡潔的測試代碼
事實上在Junit 中使用try-catch 來捕獲異常是沒有必要的,Junit 會自動捕獲異常。那些沒有被捕獲的異常就被當成錯誤處理。
13. 充分利用Junit 的assert/fail 方法
assertSame()用來測試兩個引用是否指向同一個對象
assertEquals()用來測試兩個對象是否相等
14. 確保測試代碼與時間無關
15. 使用文檔生成器做測試文檔。
『叄』 求java代碼,要求做一個測試類,實現以下功能之一。最好三個功能都有。
import java.util.*;
public class Admin {//管理類
Scanner in=new Scanner(System.in);
String msg="\t編號\t姓名\t年齡\tJava\tC#\tHtml\tsql\t總分\t平均分";
public void print(Student[] arr){//輸出方法
System.out.println(msg);
for(int i=0;i<arr.length;i++){
if(arr[i]!=null){
arr[i].setSum();
arr[i].setAvg();
System.out.println(arr[i]);
}
}
}
public boolean exist(int num,Student stu){//判斷存在方法
if(stu!=null){
if(stu.getNum()==num){
return true;
}else{
return false;
}
}
return false;
}
public void create(String name,int age,Student[] arr){//添加方法
Student stu=new Student();
stu.setName(name);
stu.setAge(age);
int i=this.setIndex(arr);
stu.setNum(i);
if(i==9999){
System.out.println("添加學生人數已達到上限,不能再添加了!");
}else{
arr[i]=stu;
}
this.print(arr);
}
public int setIndex(Student[] arr){// 返回下標
for(int i=0;i<arr.length;i++){
if(arr[i]==null){
return i;
}
}
return 9999;
}
public void select(int num,Student[] arr){//查找方法
System.out.println(msg);
for(int i=0;i<arr.length;i++){
/*if(arr[i]!=null){
if(arr[i].getNum()==num){
System.out.println(arr[i]);
return;
}
}*/
if(this.exist(num, arr[i])){
System.out.println(arr[i]);
return;
}
}
System.out.println("\t---!沒有這個學生的存在!---\t");
}
public void update(int num,Student[] arr){//更新方法
for(int i=0;i<arr.length;i++){
if(this.exist(num, arr[i])){
System.out.println("請輸入修改的姓名:");
arr[i].setName(in.next());
System.out.println("請輸入修改的年齡:");
arr[i].setAge(in.nextInt());
System.out.println("---更新信息成功---");
this.print(arr);
return;
}
}
System.out.println("---更新信息失敗---");
}
public void delete(int num,Student[] arr){//刪除方法
for(int i=0;i<arr.length;i++){
if(this.exist(num, arr[i])){
arr[i]=null;
System.out.println("---刪除信息成功---");
this.print(arr);
return;
}
}
System.out.println("---刪除信息失敗---");
}
public void input(int num,Student[] arr){//輸入方法
for(int i=0;i<arr.length;i++){
if(this.exist(num, arr[i])){
System.out.println("請輸入"+arr[i].getName()+"學生的java成績:");
if(in.hasNextInt()){
arr[i].setJava(in.nextInt());
}
//arr[i].setJava(in.nextInt());
System.out.println("請輸入"+arr[i].getName()+"學生的c_sharp成績:");
if(in.hasNextInt()){
arr[i].setC_sharp(in.nextInt());
}
//arr[i].setC_sharp(in.nextInt());
System.out.println("請輸入"+arr[i].getName()+"學生的html成績:");
if(in.hasNextInt()){
arr[i].setHtml(in.nextInt());
}
//arr[i].setHtml(in.nextInt());
System.out.println("請輸入"+arr[i].getName()+"學生的sql成績:");
if(in.hasNextInt()){
arr[i].setSql(in.nextInt());
}
//arr[i].setSql(in.nextInt());
this.print(arr);
break;
}
}
}
public void couseSort(int num,Student[] arr){//學科排序方法
if(num==1){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&arr[j]!=null){
if(arr[i].getJava()<arr[j].getJava()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
}else if(num==2){
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&arr[j]!=null){
if(arr[i].getC_sharp()<arr[j].getC_sharp()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
}else if(num==3){
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&arr[j]!=null){
if(arr[i].getHtml()<arr[j].getHtml()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
}else if(num==4){
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&arr[j]!=null){
if(arr[i].getSql()<arr[j].getSql()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
}
this.print(arr);
}
public void sumSort(Student[] arr){//總分排序方法
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&arr[j]!=null){
if(arr[i].getSum()<arr[j].getSum()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
this.print(arr);
}
}
public class Student {//學生類
private int num;
private String name;
private int age;
private int java;
private int c_sharp;
private int html;
private int sql;
private int sum;
private double avg;
public int getNum(){
return num;
}
public void setNum(int num){
this.num=num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getJava() {
return java;
}
public void setJava(int java) {
this.java = java;
}
public int getC_sharp() {
return c_sharp;
}
public void setC_sharp(int c_sharp) {
this.c_sharp = c_sharp;
}
public int getHtml() {
return html;
}
public void setHtml(int html) {
this.html = html;
}
public int getSql() {
return sql;
}
public void setSql(int sql) {
this.sql = sql;
}
public int getSum() {
return sum;
}
public void setSum() {
this.sum =this.java+this.c_sharp+this.html+this.sql;
}
public double getAvg() {
return avg;
}
public void setAvg() {
this.avg = this.sum/4;
}
public String toString(){
String msg="\t"+this.num+"\t"+this.name+"\t"+this.age+"\t"+this.java+"\t"+this.c_sharp+"\t"+this.html+"\t"+this.sql+"\t"+this.sum+"\t"+this.avg+"\t";
return msg;
}
}
import java.util.*;
public class Main {//主
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("---請定義學生的人數---");
Student[] stuArr=new Student[in.nextInt()];
Admin adminStu=new Admin();
while(true){
System.out.println("---選擇你要執行的功能---");
System.out.println("0:添加一個學生");
System.out.println("1:查找一個學生");
System.out.println("2:根據編號更新信息");
System.out.println("3:根據編號刪除學生");
System.out.println("4:根據編號輸入成績");
System.out.println("5:根據某門學科排序");
System.out.println("6:根據總分進行排序");
System.out.println("7:退出系統");
//int number =in.nextInt();//判斷
String opt=in.next();
if(opt.equals("0")){
System.out.println("---執行添加方法---");
System.out.println("請輸入學生的姓名:");
String name=in.next();
System.out.println("請輸入學生的年齡:");
int age=in.nextInt();
adminStu.create(name,age,stuArr);
//adminStu.print(stuArr);
}else if(opt.equals("1")){
System.out.println("---執行查找方法---");
System.out.println("請輸入學生的編號:");
int num=in.nextInt();
adminStu.select(num, stuArr);
}else if(opt.equals("2")){
System.out.println("---執行更新方法---");
System.out.println("請輸入學生的編號:");
int num=in.nextInt();
/*System.out.println("請輸入修改的姓名:");
String name=in.next();
System.out.println("請輸入修改的年齡:");
int age=in.nextInt();*/
adminStu.update(num, stuArr);
//adminStu.print(stuArr);
}else if(opt.equals("3")){
System.out.println("---執行刪除方法---");
System.out.println("請輸入學生的編號:");
int num=in.nextInt();
adminStu.delete(num, stuArr);
//adminStu.print(stuArr);
} else if(opt.equals("4")){
System.out.println("---執行輸入方法---");
System.out.println("請輸入學生的編號:");
int num=in.nextInt();
adminStu.input(num, stuArr);
}else if(opt.equals("5")){
System.out.println("---執行學科排序方法---");
System.out.println("請選擇需排序的學科:1.java、2.c_sharp、3.html、4.sql");
int num=in.nextInt();
adminStu.couseSort(num, stuArr);
}else if(opt.equals("6")){
System.out.println("---執行總分排序方法---");
adminStu.sumSort(stuArr);
}else if(opt.equals("7")){
System.out.println("--程序已退出--");
//break;//退出循環
System.exit(0);//退出程序
}
}
}
}
這是我以前編寫的一個微型學生管理系統,希望可以給你點思路。休息時間不多就懶。
『肆』 jmeter用java代碼怎樣編寫介面測試源碼
我們在做性能測試時,有時需要自己編寫測試腳本,很多測試工具都支持自定義編寫測試腳本,比如LoadRunner就有很多自定義腳本的協議,比如"C Vuser","Java Vuser"等協議.同樣,Jmeter也支持自定義編寫的測試代碼,不過與LoadRunner不同的是,Jmeter沒有自帶編譯器,需要藉助第三方編譯器才能實現.下面舉一個簡單的Java自定義測試代碼例子,使用Java編譯器編寫測試代碼(Java編譯器可以用Eclipse,JBulider等),實現功能為:在測試前輸入任意一個字元串,然後判斷該字元串的長度是否大於5,如果大於則測試結果成功,否則測試結果位失敗,然後在放到Jmeter中模擬10個用戶測試,同時運行這段代碼,具體實現如下:
1.打開Java編譯器,新建一個項目"TestLength",然後新建一個包"app".
2.從Jmeter的安裝目錄lib/ext中拷貝兩個文件"ApacheJMeter_core.jar"和"ApacheJMeter_java.jar"到"Tester"的項目中,然後引入這兩個JAR文件.(具體的引入方法參考各個Java編譯器的使用方法)
3.在"app"包中新建一個類,名字叫"TestLength",不過這個類要繼承"AbstractJavaSamplerClient"類,如果項目引入步驟二中的兩個文件,就可以找到"AbstractJavaSamplerClient"類了.
4."TestLength"類在繼承"AbstractJavaSamplerClient"類的同時也會繼承四個方法,分別是"getDefaultParameters","setupTest","runTest"和"teardownTest"方法."getDefaultParameters"方法主要用於設置傳入的參數;"setupTest"方法為初始化方法,用於初始化性能測試時的每個線程."runTest"方法為性能測試時的線程運行體;"teardownTest"方法為測試結束方法,用於結束性能測試中的每個線程.
5.具體實現代碼如下:
package app;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import com.passpod.core.t8.*;
/**
* @author樂以忘憂
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class TestLength extends AbstractJavaSamplerClient{
private SampleResult results;
private String testStr;
//初始化方法,實際運行時每個線程僅執行一次,在測試方法運行前執行,類似於LoadRunner中的init方法
public void setupTest(JavaSamplerContext arg0) {
results = new SampleResult();
testStr = arg0.getParameter("testString", "");
if (testStr != null && testStr.length() > 0) {
results.setSamplerData(testStr);
}
}
//設置傳入的參數,可以設置多個,已設置的參數會顯示到Jmeter的參數列表中
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("testStr", ""); //定義一個參數,顯示到Jmeter的參數列表中,第一個參數為參數默認的顯示名稱,第二個參數為默認值
return params;
}
//測試執行的循環體,根據線程數和循環次數的不同可執行多次,類似於LoadRunner中的Action方法
public SampleResult runTest(JavaSamplerContext arg0) {
int len = 0;
results.sampleStart(); //定義一個事務,表示這是事務的起始點,類似於LoadRunner的lr.start_transaction
len = testStr.length();
results.sampleEnd(); //定義一個事務,表示這是事務的結束點,類似於LoadRunner的lr.end_transaction
if(len < 5){
System.out.println(testStr);
results.setSuccessful(false); //用於設置運行結果的成功或失敗,如果是"false"則表示結果失敗,否則則表示成功
}else
results.setSuccessful(true);
return results;
}
//結束方法,實際運行時每個線程僅執行一次,在測試方法運行結束後執行,類似於LoadRunner中的end方法
public void teardownTest(JavaSamplerContext arg0) {
}
}
6.把上面的例子打包,然後把生成的"TestLength.jar"文件拷貝到Jmeter的安裝目錄lib/ext下.
7.運行Jmeter,添加一個線程組,然後在該線程組下面添加一個Java請求(在Sampler中),在Java請求的類名稱中選擇咱們剛創建的類"app.TestLength",在下面參數列表的"testStr"後面輸入要測試的字元串,然後添加一個監聽器(聚合報告),設置一下模擬的用戶數就可以測試了.如果測試不成功,Jmeter會在它自己個輸出框中拋出這個字元串.
通過上面的例子我們可以發現,使用Jmeter自定義Java測試代碼,配合Jmeter自帶的函數,就可以實現出LoadRunner中"Java Vuser"協議的絕大多數功能,而且是沒有用戶數限制和完全免費的(嘿嘿).上面的例子非常簡單,而且沒有任何實際意義,只是一個簡單的Jmeter測試代碼示例,用於拋磚引玉,希望大家一起交流,共同 進步.
『伍』 android studio 怎樣單純地測試java代碼
自從google發布了新的Android開發工具AndroidStudio,我想很多和我一樣的android開發者一定都從Eclipse轉身到了AndroidStudio的懷抱了吧。它強大的代碼提示和自動完成,完備的配置功能,不是Eclispe能比的。But,有時候你也想測試一段純Java代碼或者工程怎麼辦?貌似沒有選項啊?實際上是可以的,按照步驟來吧。
工具/原料
Android Studio 0.5.5(這是我當前的版本)
方法/步驟
新建一個project,或者如果你已經有project的話,那就直接新建一個mole.注意選擇Java library,然後下一步
輸入mole的一些信息。點擊finish
在左側找到build.gradle,雙擊打開,參照圖中修改一下配置。
編寫你的java代碼測試下吧。