前些日子看到junit可以测试java代码,我想在eclipse下实现一下,找着书写了2个类
import junit.framework.TestCase;public class TestThatWeGetHelloWorldPrompt extends TestCase {

public TestThatWeGetHelloWorldPrompt(String name) {
super(name);
}

public void testSay(){
HelloWorld hi = new HelloWorld();
assertEquals("Hello World!",hi.say());
}

public static void main(String[] args) {
junit.textui.TestRunner.run(TestThatWeGetHelloWorldPrompt.class); 
}
}package no1;public class HelloWorld { public String say(){
return "Hello World!";

}
}
为什么运行的时候总说找不到could find the main class.
java.lang.UnsupportedClassVersionError: junit/framework/TestListener (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Exception in thread "main" 

解决方案 »

  1.   

    你要用菜单上file/new/other/java/junit/junit testcase来新建这个类
      

  2.   

    先建一个HelloWorld类
    package forTest;
    public class HelloWorld {
    public String say() {
    return "Hello World!"; }
    }
    然后新建一个Junit Test Case,最方便的方式是直接右键点HelloWorld类然后新建,这样它知道是为了测试HelloWorld,会自动填写被测试的类名,包名以及给测试类起名。
    然后选Next,选择你要测试的方法,只把HelloWorld勾上就可以了。点Finish。
    自动建成一个叫HelloWorldTest的类,在里面的public void testSay()中写
    HelloWorld hi = new HelloWorld();
    assertEquals("Hello World!",hi.say());
    保存。
    Run as... 选Junit Test
    测试结果就出来了。
      

  3.   

    java.lang.UnsupportedClassVersionError: junit/framework/TestListener (Unsupported major.minor version 49.0)
    ------------------------
    不是找不到main函数,而是说要求使用jdk1.5版本以上。要么把你的jdk升级到1.5要么把你的Junit换个低版本的(比如3.x)吧
      

  4.   

    为什么要用junit测试,设断点不是不是也行吗?用它侧有什么好处?
      

  5.   

    TO hardways() 
        设置断点是调试程序,不是测试程序
    @.@||~
      

  6.   

    midthinker
    举个例子,干什么要用junit测试?字节IE运行测试不行吗?
      

  7.   

    学习+职业交流QQ群,欢迎接分,加入.http://community.csdn.net/Expert/topic/4946/4946220.xml?temp=.7922022
      

  8.   

    TO hardways() 
        一般得软件开发分层进行已经不是什么秘密,假设是一个普通的B/S架构的软件系统,如果我们在测试的任何阶段都采用从顶层(view,通俗的讲就是打开Browser,按照一定的顺序点击,并观察输出结果)自下进行测试,则有以下缺点:1. 难于测试,即使仅仅是想测试简单的business层的功能都必须自顶向下操作整个步骤。2. 一旦发现BUG,问题地点难以定位,因为一般的普通测试属于功能测试,早已经跨越多个层次。3. 不能自动化测试,JUnit编写的脚本可以保证在下次修改了某些代码后重新测试,而你只要按下那个钮,但是如果仅仅使用人力测试,那么非常耗费成本。4. 因为原因3而导致不愿意测试,或将测试向后推延,导致问题发生过晚修改成本极高。
       测试的成本高会导致人们懒于测试,而这偏偏与越早发现BUG越好的事实相背。5. 测试覆盖率,人的手工测试可能产生遗漏或偏差,但自动化测试可以弥补不断重复测试导致的偶然遗漏或偏差6. 错误提示和测试报告,通过自动测试工具发现问题可以附件错误提示,以确定错误真正发生的原因,而不用随便依靠感觉猜测。同时依靠其他工具可以生成精美的测试报告,减免收工作业。7. 为了Refactor,如果想重构你的代码,而没有完整的测试脚本,那和走钢丝没啥两样最后为了软件质量,也为了自信的继续编码@.@||~
      

  9.   

    我做UT的code:package com.lucent.lps.soap.user.test;import junit.framework.TestCase;/**
     * @author bie
     *
     */
    public class BasicTestCase extends TestCase {
        
        public BasicTestCase(String name) {
            super(name);
        }    public static void assertMatchs(String string, String regex)
        {
            boolean match = string.matches(regex);
            assertTrue("Assert matching fail: " + string + "does not match " + regex, match);
        }
        
        public static void assertNotEquals(int a, int b)
        {
            assertTrue("Assert not equals fail: " + a + "does not equals " + b, a != b);
        }
        
        public static void assertNotNagitive(int num)
        {
            assertTrue("Assert not nagitive fail: " + " num = " + num, num >= 0);
        }
    }================================================package com.lucent.lps.soap.user.test;import java.io.UnsupportedEncodingException;
    import java.nio.ByteBuffer;
    import java.nio.charset.Charset;
    import java.rmi.RemoteException;import com.lucent.soap.schema.lcm.*;import junit.framework.Test;
    import junit.framework.TestSuite;/**
     * @author bie
     *
     */
    public class UserTestCase extends BasicTestCase {
        public static com.lucent.qd.lcm_dev10_n1_ext.jboss_net.services.PABWebService.PABWebServiceSoapBindingStub pabBinding = null;
        public static com.lucent.qd.lcm_dev10_n1_ext.jboss_net.services.LogonWebService.LogonWebServiceSoapBindingStub logonBinding = null;
        public static com.lucent.soap.schema.lcm.SessionIdData sessionId;
        
        public UserTestCase(String name) {
            super(name);
            try {
                if (pabBinding == null)
                    pabBinding = (com.lucent.qd.lcm_dev10_n1_ext.jboss_net.services.PABWebService.PABWebServiceSoapBindingStub)
                    new com.lucent.qd.lcm_dev10_n1_ext.jboss_net.services.PABWebService.PABWebServiceServiceLocator().getPABWebService();
                pabBinding.setMaintainSession(true);
                
                if (logonBinding == null)
                 logonBinding = (com.lucent.qd.lcm_dev10_n1_ext.jboss_net.services.LogonWebService.LogonWebServiceSoapBindingStub)
                    new com.lucent.qd.lcm_dev10_n1_ext.jboss_net.services.LogonWebService.LogonWebServiceServiceLocator().getLogonWebService();
                logonBinding.setMaintainSession(true);
            }
            catch (javax.xml.rpc.ServiceException jre) {
                if(jre.getLinkedCause()!=null)
                    jre.getLinkedCause().printStackTrace();
                throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre);
            }
            assertNotNull("binding is null", pabBinding);
            pabBinding.setTimeout(60000);
        }
        
        public String decode(String str, String charset) throws UnsupportedEncodingException
        {
         if (str == null)
         return null;
        
         Charset charSet = Charset.forName(charset);
        
         if (charSet == null) return str;
        
         ByteBuffer bb = ByteBuffer.allocateDirect(str.length() * 2);
         byte[] chars = str.getBytes(charset);
         for(int i = 0; i < str.length(); i ++)
         {
         bb.put(i*2, chars[i*2]);
         bb.put(i*2+1, chars[i*2+1]);
         }
        
         return charSet.decode(bb).toString();
        }
        
        public void testLogon() throws RemoteException, UnsupportedEncodingException
        {
            com.lucent.soap.schema.lcm.LogonResultData value = null;
            com.lucent.soap.schema.lcm.LogonIdData logonData = new com.lucent.soap.schema.lcm.LogonIdData();
            logonData.setPartitionId("china");
            logonData.setUserId("franky1");
            logonData.setPassword("87848784");
            
            value = logonBinding.logon(logonData);
            
            //System.out.println(value.getUserData().getFirstName() + ", " + value.getUserData().getLastName());
            
            byte[] chars = value.getUserData().getFirstName().getBytes("UTF-16BE");        String name = new String(chars, "UTF-16BE");
            sessionId = value.getSessionId();
            
            System.out.println(name + ", " + sessionId.getSessionId());
            
            // Assert
            assertNotNull(value);
            assertMatchs(value.getSessionId().getSessionId(), "[0-9]+");
            assertNotEquals(0, value.getLogonResult());
        }
        
        public void testLogout() throws RemoteException
        {
            logonBinding.logout(sessionId);
        }
        
    /*    
        public void testClick2Dial() throws RemoteException
        {
            com.lucent.soap.schema.lcm.CallIdData value = null;
            com.lucent.soap.schema.lcm.ClickToDialData click2DialData = new com.lucent.soap.schema.lcm.ClickToDialData();
            com.lucent.soap.schema.lcm.PhoneIdData phone = new com.lucent.soap.schema.lcm.PhoneIdData();
            phone.setPhoneId("+19745403100");
            click2DialData.setPhone(phone);
            value = binding.clickToDial(click2DialData);
            // Assert
            assertNotNull(value);
            assertNotNagitive(value.getCallId());
        }
        
        public void testGetActiveCalls() throws RemoteException
        {
            com.lucent.soap.schema.lcmws.ActiveCallListData activeCalls = null;
            
            activeCalls = binding.getActiveCalls();
            
            assertNotNull(activeCalls);
            assertNotNull(activeCalls.getCallList());
            //assertNotNegitive(activeCalls.getCallList().length);
        }
     */
        
        public void testAddContact() throws RemoteException
        {
         com.lucent.soap.schema.lcm.PABContactData newContact = new com.lucent.soap.schema.lcm.PABContactData();
         //newContact.setFirstName("first");
         //newContact.setLastName("last");
        
         com.lucent.soap.schema.lcm.PABContactResultData result = pabBinding.addContact(sessionId, newContact);
        
         System.out.println(result.getContactID() + " - " + result.getLastUpdateNum());
        }
        
        public void testDelContact() throws RemoteException
        {
         PABContactIDData contactId = new PABContactIDData();
         contactId.setContactID(3);
         com.lucent.soap.schema.lcm.PABContactResultData pabContact = pabBinding.delContact(sessionId, contactId);
        }
        
        public void testGetPAB() throws RemoteException
        {
         com.lucent.soap.schema.lcm.UpdateNumber updNum = new com.lucent.soap.schema.lcm.UpdateNumber();
         updNum.setUpdateNum(0);
         com.lucent.soap.schema.lcm.PABUserData pab = pabBinding.getPAB(sessionId, updNum);
        
         System.out.println("got pab! there are " + pab.getContacts().length + " contacts");
        }    public static Test suite()
        {
            TestSuite suite = new TestSuite();
            suite.addTest(new UserTestCase("testLogon"));
            //suite.addTest(new UserTestCase("testAddContact"));
            //suite.addTest(new UserTestCase("testGetPAB"));
            //suite.addTest(new UserTestCase("testDelContact"));
            //suite.addTest(new UserTestCase("testGetActiveCalls"));
            //suite.addTest(new UserTestCase("testClick2Dial"));
            suite.addTest(new UserTestCase("testLogout"));
            
            return suite;
        }
        
        public static void main(String[] args) throws RemoteException
        {
            junit.textui.TestRunner.run(UserTestCase.suite());
        }
    }
      

  10.   

    junit.jar需要加入到build path中。