Classes in separate units

What is the logic behind the separation of classes in separate units?
I am asking because it has happened to have an applet with several classes in one unit and the virtual machine could not find the classes. I separated the classes into different units and it worked fine.
But in some cases classes do not necessarily need to be in different units (for example event implementations).
So I am confused... what is the logic behind this?

What is the logic behind the separation of classes in separate units?A unit test, tests the smallest unit. You can create unit tests for just one method but it common to test all the methods in a class.
You use the JUnit frame work to test multiple classes, but this is called a functional test. i.e. multiple units.
However, the minimum is unit tests for seperate classes. Only when these work does it make sense to perform functional tests of multiple classes.
I am asking because it has happened to have an applet with several classes in one unit I assume you are saying there is no way to break up these classes anbd test just one of these classes. This can be done using mock objects. mock object replace the objects which are required just to test a given class.
The mock objects for testing class can usually be reused as mock objects to test all classes.
and the virtual machine could not find the classes. This probibly a configuration issue.
I separated the classes into different units and it worked fine.Your environment is not setup conrrectly. Try using a free IDE such as netbeans or eclipse.
But in some cases classes do not necessarily need to be in different units (for example event implementations).For the purposes of unit tests, a unit is a class because you cannot break up the class any smaller. What kind of unit are you refering to?

Similar Messages

  • Creating Private Inner Classes in Separate Files

    I sometimes find myself wanting to use private inner classes to do things, but then moving the classes to separate files and giving them package access just because I don't like having single large files.
    Is there a way to create private inner classes on a class but just save them in another file?
    Thanks,
    John

    For me, short file sizes usually make design structure
    more clear. This can make maintenance easier. It can
    also make browsing the code easier, even if you have a
    good editor or IDE. It is also less intimadating
    psychologically (for me, anyway) to work with a number
    of small files, each one with a distinct purpose, than
    it is to open up a monster, even if the monster does
    represent a coherent design unit in some sense. I
    think this psychological impact may be more important
    than most people give it credit for.The psychological impact is lessened if you use an IDE like VisualAge (where only one method at a time is generally displayed) or use the "Show Source Of Selected Element Only" option in Eclipse.
    It's one thing to say a method should be short and a class should have as few methods as possible. Those forces reduce complexity and ease maintenance. It's another to say a source file should be short. A source file is just a storage artifact; source code could be stored in a database without changing how the programmer interacts with it. The fact that the standard java compiler requires the implementation of nested classes to be stored inside the source file of their containing class is a minor inconvenience. Don't let it discourage you from using inner classes when they make sense. The design should not be driven by source file size considerations.
    >
    But you have added code only with the sole intent of
    making a source file smaller. If Java had amechanism
    for storing nested classes in other files youwouldn't
    do this. My point below was that you shouldn't let
    source file size override the decision to use anested
    class.Why shouldn't I let it? There are plenty of
    non-trivial benefits (the ones I gave above, for
    starters) to working with smaller files.Because all of those benefits can be gained from using a decent IDE. Eclipse is free. It can show only the current method and it can collapse nested classes.
    You say "If
    Java had a mechanism...." Well, I could answer: It
    does have such a mechanism, and that mechanism is
    packages.Packages are not a mechanism for creating private inner classes in separate files. Eclipse has a mechanism for making the fact that they reside in the same source file a non-issue.
    >>
    I am not being cavalier. I have no argument, onlyan
    opinion.Again, you are perfectly entitled to your opinion.
    But if it is truly an opinion, and nothing more, why
    bother telling me about it. You might as well post
    your favorite color. It is the reasons for your
    opinion that interest me, and you still have not
    really given any.I have had lengthy arguments about the issue of method and class size. Like I said before, I prefer very small classes and methods. I also think the number of nested classes should be as small as possible. But I have no problem with large files. Files are just one way to organize source code. The size of the things in the files matters, not the files themselves.

  • [svn:osmf:] 13351: Adding a new TimeUtil class and corresponding unit tests .

    Revision: 13351
    Revision: 13351
    Author:   [email protected]
    Date:     2010-01-07 16:19:20 -0800 (Thu, 07 Jan 2010)
    Log Message:
    Adding a new TimeUtil class and corresponding unit tests.
    Modified Paths:
        osmf/trunk/framework/MediaFrameworkFlexTest/org/osmf/MediaFrameworkTests.as
    Added Paths:
        osmf/trunk/framework/MediaFramework/org/osmf/utils/TimeUtil.as
        osmf/trunk/framework/MediaFrameworkFlexTest/org/osmf/utils/TestTimeUtil.as

    HI
    add that fileds in the all locations where you need it like
    in internal table declaration , write statement , select statement
    these are the main areas where you have to add that 2 fileds

  • NoClassDefFoundError extending class in separate JAR

    I have a class Foo which gets called from my servlet (extends HttpServlet) class. Both Foo and the servlet class are located in WEB-INF/classes and are deployed as part of the war file. Class Foo extends class Bar, which is a different .jar file located in the /WEB-INF/lib directory of the webapp. When I attempt to create an instance of Foo, I get the following exception:
    java.lang.NoClassDefFoundError: /general/client/common/beans/Bar
         at java.lang.ClassLoader.defineClass1(Native Method)
         at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
         at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
         at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
         at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
         at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1267)
         at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
         at server.DBServlet.createFoo(DBServlet.java:236)
         at server.DBServlet.processInput(DBServlet.java:333)
         at server.DBServlet.doGet(DBServlet.java:154)
         at server.DBServlet.doPost(DBServlet.java:205)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
         at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
         at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:419)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
         at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
         at java.lang.Thread.run(Thread.java:595)
    I'm running this on Windows, and found if I added the classpath the the jar file where the Bar class is located, that it worked fine. But my expectation is that the jar file should have been found because it is in the /WEB-INF/lib dir. There is a line the Tomcat docs that says:
    "Last, any JAR containing servlet API classes will be ignored by the classloader. All other class loaders in Tomcat 5 follow the usual delegation pattern."
    So maybe I need to do something special to load the Bar class, or there's something strange about the way the classes and jars are being loaded that I don't fully understand. I was able to instantiate the Bar class directly from w/in my servlet class, I just can't create an instance of the Foo class that is in /WEB-INF/classes along with the servlet class. So I'm not convinced that the Bar class or associated jar file isn't being loaded.
    I don't want to have to set the classpath explicitly, so I'm looking for advice on why I'm getting this exception and how best to dynamically load the classes I need.
    Thanks.
    ab.

    Thanks for hanging in there so far. Here's the specifics if you want to try to re-create this.
    I have a webapp, which contains the class DBServlet:
    package com.hm.dhca.server;
    public class DBServlet extends HttpServlet
    // Stuff
         public void processInput()
              Foo foo = new Foo();
    The webapp also contains the class Foo:
    package com.hm.dhca.common;
    import com.general.client.common.beans.Bar;
    public class Foo extends Bar
         public Foo()
              super();
              System.out.println("Foo");
    Both of the classes are located in webapps\DHCA\WEB-INF\classes...
    The Bar class is in a separate jar called HMJCommon.jar in the webapps\DHCA\WEB-INF\lib dir.
    Class Bar looks like this:
    package com.general.client.common.beans;
    public class Bar
         public Bar()
              System.out.println("Bar");
    DBServlet creates an instance of Foo as:      
    Foo foo = new Foo();
    Which throws the Exception:
    java.lang.NoClassDefFoundError: com/general/client/common/beans/Bar
         at java.lang.ClassLoader.defineClass1(Native Method)
         at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
         at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
         at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
         at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
         at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1267)
         at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
         at com.hm.dhca.server.DBServlet.processInput(DBServlet.java:236)
         at com.hm.dhca.server.DBServlet.doGet(DBServlet.java:154)
         at com.hm.dhca.server.DBServlet.doPost(DBServlet.java:205)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
         at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
         at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:419)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
         at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
         at java.lang.Thread.run(Thread.java:595)
    Clues:
    1. All three classes exist in the locations specified above - I have checked this manually.
    2. Within DBServlet, I can create an instance of Bar. But I cannot create an instance of Foo without the exception.
    3. If I move the Foo class from package com.hm.dhca.common to package com.hm.dhca.server (same package as DBSerlvet), everything works fine.
    4. If I modify Tomcat's classpath to include the HMJCommon.jar, it works fine (as previously discussed).
    Theory:
    I have a vague theory that what is happening is that two different webappclassloaders are loading the Foo and Bar classes, for whatever reason. As a result, they can't see each other, because neither is up the hierarchy tree from the other.
    This does not explain how I can instantiate Bar from DBServlet, but not Foo.
    Hope this helps. I think I've corrected previous mistake w/ removing too much from package naming. I'm resorting to the workaround in clue #3 for the moment. But it's not the correct solution, and it's showing that I don't really understand what's going on here.

  • Asset class Land separate & building separate ( for 1 asset)

    Warm Greetings to All Group Members
    Require Best practice solution
    Current Scenario Our company Purchased the building in 2009 and In SAP system Building was created, posted to asset class Building with the depreciation for 40 Years
    Our Audit department is requesting our Finance department to show two assets separate as
    1) land with useful life 40 Years with value
    2) Building with useful life Zero with value
    Note
    current The posted asset in sap Has value ( Building + land)
    2.Our company is state transport company
    Please suggest me/as what is the best practice
    Should i create a new asset class separate as land and move the value of building to land
    Your Early Reply will be appreciated
    regards
    shamul heq

    Hi Shamul heq
    If you want to manage land and building separately, you need to create new asset class for land beside asset class for building. Then create new land asset master data under land asset class and transfer value of the land from original building asset to newly created land asset.
    Alternatively, case of no necessary to manage land seperately, you can simply transfer the value of land to sub-number asset of the building asset. In this way, you can manage the building and the land as one asset in SAP system.
    Regards
    George

  • Separate interfaces and classes in separate packages?

    I am writing an application in the package 'models.geometry'. I am beginning to get a growing number of interfaces with corresponding implementation classes. I therefore consider adding another packages an move all the interfaces to this package and keep the implementation in the original package:
    'models.igeometry' // for the interfaces
    'models.geometry' // for the implementation
    But is this interface/class - package separation good practice?

    First of: Usage of the prefix "I" to identify interfaces is rather rare in the Java world (it's not unheard of, but definitely not the norm). And I've never seen "i<package>" to identify a package containing interfaces, so I wouldn't suggest it.
    The question is: What does the code which uses your packages access? Does it only need the interfaces and a factory? In this case, I'd separate the packages into "models.geometry" and "models.geometry.impl".
    If the classes are first-level API, just as the interfaces (think Link/ArrayList, Map/HashMap), then I'd keep them in the same package or separate them on some other property.

  • Common classes across separate EJB jars

    What is the best way to package classes that are common across separate EJB jar files? IE, i have an object that is passed between the 2, or a utility that is used by both. Is it customary to package the classes within the EJB jar file? This seems silly to me because
    now you have 2 versions of the same class that could possibly change in one of them. Or should I put the classes into the classpath of the J2EE container? Thanks for any advice.

    Both ways will work, we prefer the first one (packaging the classes in both jars). We are using BEA WebLogic 6.x and putting it in the containers classpath would mean to restart the server every time we changed this classes. Mabe you should consider making a single jar for both EJBs if they will always be used together.
    Regards,
    hedtfeld.

  • Nested classes and separate files in Javadoc...

    Hello. I am writing an application, and it has several .java files, and some of the classes contained therein contain nested classes, for example
    ClassOne.java
    class ClassOne
    // stuff
       class innerClassOne
          //more stuff
    }ClassTwo.java
    class ClassTwo
    // stuff
       class innerClassTwo
          //more stuff
    }What I want to do is generate documentation like the online java documentation for my app, that is, documentation that will contain ALL the classes and nested classes involved, and link everything that comes in java already to the sun online java docs.
    I've figured out the -link command for javadoc, and I can make that work, but I've run into some other snags.
    1.) Javadoc isn't finding or documenting my nested classes, despite them being marked up. Google does not wish to help.
    2.) Some classes reference other classes of mine that aren't conatined in the same .java file, but do exist in their own .java files in the dame local directory. Javadoc does not like this, and gives errors.
    3.) Running javadoc on one file at a time overwrites the old file's documentation, thus I cannot seem to get an index.html javadoc file that links to all my classes, nor can I get the classes to link to each other.
    What do I need to do to fix these?

    So this means a nested static inner class CANNOT refer to its own instanced variables, like a normal static method, but CAN refer to its outer class instanced variables?No, it means that a static nested class cannot refer to instance variables of its enclosing class. Example:public class Foo {
        int i;
        static class Bar {
            int j = i; // WRONG! Bar class is static context
    }~

  • Flash Builder 4.6 - How can I keep unit test classes out of the finished swc?

         I have a library of code I'm building and I'm working on unit testing but I have a major issue. When my finished swc compiles no matter what I do it includes the unit test classes as part of the intellisense if you load the swc via flash. The classes aren't really in the swc since if you just try and import them they'll come up undefined. They only appear to go into the intellisense for the swc. Does anyone know how can I keep this from happening in the finished source? Currently my folder setup is like this in flash builder.
    src\main - source documents for the library to get compiled
    src\mock - mock class area for unit testing
    src\test - unit test classes
         In the project Properties panel > the first tab of my Flex Library Build path I have selected only the src\main folder for the classes to inlude in the library. No other folder paths are selected.
    The "Flex Library Build Path" doesn't change my results with any setting.
    Thanks,

    Mel Riffe,
    Here's a Help topic about compiler options in Flash Builder: http://help.adobe.com/en_US/flashbuilder/using/WSe4e4b720da9dedb524b8220812e5611f28f-7fe7. html
    For information on using mxmlc, the application compiler, to compile SWF files from your ActionScript and MXML source files, you can see: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7fcc.html
    Hope this helps,
    Mallika Yelandur
    Flash Builder Community Help & Learning
    Adobe Systems Incorporated

  • Creation of developement class,package and access key

    COULD ANYBODY EXPLAIN about
    creation of developement class,package and access key
    and who will create them?

    Working With Development Objects
    Any component of an application program that is stored as a separate unit in the R/3 Repository is called a development object or a Repository Object. In the SAP System, all development objects that logically belong together are assigned to the same development class.
    Object Lists
    In the Object Navigator, development objects are displayed in object lists, which contain all of the elements in a development class, a program, global class, or function group.
    Object lists show not only a hierarchical overview of the development objects in a category, but also tell you how the objects are related to each other. The Object Navigator displays object lists as a tree.
    The topmost node of an object list is the development class. From here, you can navigate right down to the lowest hierarchical level of objects. If you select an object from the tree structure that itself describes an object list, the system displays just the new object list.
    For example:
    Selecting an Object List in the Object Navigator
    To select development objects, you use a selection list in the Object Navigator. This contains the following categories:
    Category
    Meaning
    Application hierarchy
    A list of all of the development classes in the SAP System. This list is arranged hierarchically by application components, component codes, and the development classes belonging to them
    Development class
    A list of all of the objects in the development class
    Program
    A list of all of the components in an ABAP program
    Function group
    A list of all of the function modules and their components that are defined within a function group
    Class
    A list of all of the components of a global class. It also lists the superclasses of the class, and all of the inherited and redefined methods of the current class.
    Internet service
    A list of all of the componentse of an Internet service:
    Service description, themes, language resources, HTML templates and MIME objects.
    When you choose an Internet service from the tree display, the Web Application Builder is started.
    See also Integrating Internet Services.
    Local objects
    A list of all of the local private objects of a user.
    Objects in this list belong to development class $TMP and are not transported. You can display both your own local private objects and those of other users. Local objects are used mostly for testing. If you want to transport a local object, you must assign it to another development class. For further information, refer to Changing Development Classes
    http://help.sap.com/saphelp_46c/helpdata/en/d1/80194b454211d189710000e8322d00/content.htm
    Creating the Main Package
    Use
    The main package is primarily a container for development objects that belong together, in that they share the same system, transport layer, and customer delivery status. However, you must store development objects in sub-packages, not in the main package itself.
    Several main packages can be grouped together to form a structure package.
    Prerequisites
    You have the authorization for the activity L0 (All Functions) using the S_DEVELOP authorization object.
    Procedure
    You create each normal package in a similar procedure to the one described below. It can then be included as a sub-package in a main package.
    To create a main package:
    1.       Open the Package Builder initial screen (SE21 or SPACKAGE).
    2.       In the Package field, enter a name for the package that complies with the tool’s Naming Conventions
    Within SAP itself, the name must begin with a letter from A to S, or from U to X.
    3.       Choose Create.
    The system displays the Create Package dialog box.
    4.       Enter the following package attributes:
    Short Text
    Application Component
    From the component hierarchy of the SAP system, choose the abbreviation for the application component to which you want to assign the new package.
    Software component
    Select an entry. The software component describes a set of development objects that can only be delivered in a single unit. You should assign all the sub-packages of the main package to this software component.
    Exception: Sub-packages that will not be delivered to customers must be assigned to the HOMEsoftware component.
    Main Package
    This checkbox appears only if you have the appropriate authorization (see Prerequisites).
    To indicate that the package is a main package, check this box.
    5.       Choose  Save.
    6.       In the dialog box that appears, assign a transport request.
    Result
    The Change package screen displays the attributes of the new package. To display the object list for the package in the Object Navigator as well, choose  from the button bar.
    You have created your main package and can now define a structure within it. Generally, you will continue by adding sub-packages to the main package. They themselves will contain the package elements you have assigned.
    See also
    Adding Sub-Packages to the Main Package
    http://help.sap.com/saphelp_nw04/helpdata/en/ea/c05d8cf01011d3964000a0c94260a5/content.htm
    access key used for change standard program.
    www.sap.service.com

  • What is a development class

    what is a development calss & how to creat it?

    Hi,
    Development class is nothing but package...u can create it in SE80 or SE21...
    Any component of an application program that is stored as a separate unit in the R/3 Repository is called a development object or a Repository Object. In the SAP System, all development objects that logically belong together are assigned to the same development class.
    Regards,
    Nagaraj

  • ABAP Unit Test Problem

    Here we go again on questions regarding ABAPUnit.  We are trying to use Abap unit within a Class object.  All the examples we have seen have to do with Classes and Methods within a Report program. 
    What we have created:
    Class: ZCL_MAIN
    Type: General Class
    Method:  test_abapunit
    Class: ZCL_MAIN_TEST
    Class type: Abap Unit
    Sub Class of ZCL_MAIN
    Method: Test_abapunit_test 
    We try and run the Abap Unit Test from the Test Class and it says it is complete but does not execute our code.  I know we are doing something wrong but are stumped as to what it is.
    Glenn

    Hi Glenn,
    although Uwe and Klaus actually provided for the relevant information we too faced some difficulties at first understanding 'where' you actually put the test classes. So here are the mechanics:
    Open SE80 or SE24 and implement your class ZCL_MAIN.
    While this class is opened, choose <i>Goto->Class-local types->Local Class Definitions/Types</i> from the menu. An editor for local classes is opened on the right.
    Type in your class definition ZCL_MAIN_TEST like this:
    CLASS lcl_main_test DEFINITION FOR TESTING.
      "#AU Risk_Level Harmless
      PRIVATE SECTION.
        CONSTANTS: some_initial_test_value TYPE i VALUE 5.
        DATA: main_class TYPE REF TO zcl_main.
        METHODS setup     FOR TESTING.
        METHODS teardown  FOR TESTING.
        METHODS check_get_my_int FOR TESTING.
        METHODS check_.. FOR TESTING.
    ENDCLASS.
    This is btw a 'normal' local class, no subclass of cl_abap_unit.. whatsoever.
    Go back (menu <i>Goto->Class Definition</i>).
    Choose <i>Goto->Class-local types->local class implementations</i> from the menu.
    Type in your class implementation for ZCL_MAIN_TEST, i.e. implement especially the setup()-method for the test fixture and the various test-methods.
    Compile/activate your class ZCL_MAIN.
    Run the test by choosing <i>Test->Unit Test</i> from the context menu of the class ZCL_MAIN.
    Hope this helps, regards,
    Sebastian

  • Two Questions on ABAP UNIT

    I'm familiar with the technical concept of ABAP Unit testing, using both local or global classes, running sets of Unit Tests using the Code Inspector. However, I'm struggling with two issues:
    a) Technical issue: how can I test a Protected or Private method of a class using ABAP Unit testing? It works if the class to be tested has granted friendship to the unit test class, but is that the way to do this?
    b) conceptual issue on the types of Unit Tests to define: the Unit Test is based on comparing actual results with expected results. But how can I predict a result on a development environment that is constantly changing?
    Thanx in advance
    Ben Meijs

    Hi!
    For having plan vs actual report, first of all you need to define CO versions through ORKE for your operating concern. You also needs to define plan version through KE14. Also you need to assign COPA reciever plan version for integrated planning.
         All your SD condition types need to be assigned to value fields. Also to flow actual values of production orders, CO Orders - it is required to assign PA transfer structure to settlement profile. Settlement profile must allow profitlability segments as settlement recievers and it must be stored in settlement profile. The assignment ensures that variances also flows to COPA. Key figure should also be defined for when assessment is caried out from cost center accounting to COPA. Also your value fields are also to be assigned to Cost component structure in COPA.
           After doing above necessary activity, you may plan for your form of report through KE34. Lines, form and header are specified by means of characteristics or value fields.
    Hope it helps a lot!
    Please revert back for any query.
    Thanks & Regards,
    Taral Patel

  • Calling a method and setting an ImageIcon with source from anoth class

    I am trying to make a simple game, first I am trying to set up a game board, and make it possible to place units on the board. (This game will probably never be possible to play, I am just using it to try to understand Java, GUI, Swing, and using more than one class).
    So far I have 4 classes: Board (extends JFrame, sets up a gameboard, on which to place the pieces), Unit (a class from which the specific units types will inherit), Horse (my only type of unit, which extends the Unit class), and Game (which calls methods from the other classes).
    (These don't do much now.. this is what they will do, hopefully).
    All these classes are in a package called Gamev1.
    In the main method of Game, I do:
    ---code--
    public static void main (String[]args){
    new Board().show();
    Horse horseUnits[] = new Horse[1];
    horseUnits[0] = new Horse();
    horseUnits[0].moveUnit(squares[0]);
    end of code--
    when I debug it I get:
    myjava/FirstGraphics/Gamev1/Game.java [25:1] cannot resolve symbol
    symbol: variable squares
    location: class.myjava.FirstGraphics.Gamev1.Game
    horseUnits[0].moveUnitsquares[0]);
    1 error
    ---code----
    moveUnit(JLabel moveTo)
    is a method in Unit class:
    public void moveUnit(JLabel moveTo){
    target=moveTo;
    target.setIcon(this.image);
    if (this.position !=null)
    this.position.setIcon(noUnit);
    this.position=moveTo;
    ---end of code---------
    squares[] is an array of JLabels which is set up in the Board class, whenever a new Board is created:
    ---code---
    JLabel squares[] = new JLabel[100];
    for (int s=0; s<100; s++){
    squares[s] = new JLabel();
    ---end of code---
    I tried changing the reference from squares[0] to Board.squares[0] but I got the same error message in debug.
    Any idea what is wrong?
    I have another problem, which is probably similar.
    in the Board class I call:
    squares[s].setIcon(Unit.noUnit);
    and in the Unit class I have:
    static ImageIcon noUnit = new ImageIcon("images//none.gif");
    I don't get an error message mentioning it, but (without the attempt to place the horse on the board) the program compiles, but doesn't put this image on the labels. Any idea what is the porblem here?
    If I have not given enough information for anyone to help me, please tell me what further information I should give.
    Thanks to anyone who answers.

    I got it to work with
        Board board = new Board();
        horseUnits[0].moveUnit(board.squares[0]);To use Board.squares[0], squares would have to be static.
    The ImageIcon seemed to work okay. I noticed that your post had two slashes in the url [/] - that might throw things off . . .
    The code below has the icon call at the end of setLabeLProperties.
    I got carried away playing with the graphics so the squares don't work very well.
    import java.awt.*;
    import java.awt.geom.*;
    import javax.swing.*;
    public class HumaniBlue {
      public static void main(String[] args) {
        Board board = new Board();
        board.show();
        JLabel label5 = board.getLabel(5);
        //System.out.println("label5 name = " + label5.getText());
        Horse[] horseUnits = new Horse[1];
        horseUnits[0] = new Horse();
        horseUnits[0].moveUnit(board.squares[0]);
    class Unit {
      static ImageIcon noUnit = new ImageIcon("images/bclynx.jpg");
      public void moveUnit(JLabel square) {
    class Horse extends Unit {
      public Horse() {}
    class Board {
      JFrame f;
      JPanel gameBoard;
      int labelSize;
      JLabel[] squares = new JLabel[16];
      GridBagConstraints gbc = new GridBagConstraints();
      public Board() {
        gameBoard = new JPanel(new GridBagLayout()) {
          public void paintComponent(Graphics g) {
            Graphics2D g2 = (Graphics2D)g;
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                                RenderingHints.VALUE_ANTIALIAS_ON);
            double width  = getSize().width;
            double height = getSize().height;
            g2.setPaint(Color.white);
            g2.fill(new Rectangle2D.Double(0, 0, width, height));
            g2.setPaint(Color.black);
            Shape line;
            double
              gridSize = (width < height ? width : height) * 0.8,
              gridUnit = (width < height ? width : height) / 5,
              x = (width  - gridSize) / 2,
              y = (height - gridSize) / 2;
            labelSize = (int)gridUnit;
            for(int j = 0; j < 5; j++) {
              line = new Line2D.Double(x, y, x, y + gridSize);      
              g2.draw(line);
              x += gridUnit;
            x = (width - gridSize) / 2;
            for(int j = 0; j < 5; j++) {
              line = new Line2D.Double(x, y, x + gridSize, y);
              g2.draw(line);
              y += gridUnit;
          //System.out.println("width = " + width + "\theight = " + height + "\n" +
          //                   "x = " + x + "\ty = " + y + "\n" +
          //                   "gridSize = " + gridSize + "\tgridUnit = " + gridUnit);
        f = new JFrame();
        f.getContentPane().add(gameBoard);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(400,400);
        f.setLocation(600,200);
        //f.setVisible(true);
        setLabelProperties();
      private void setLabelProperties() {   
        int
          r   = 30,
          g   = 30,
          b   = 0,
          inc = 55;
        //System.out.println("labelSize = " + labelSize);
        for(int j = 0; j < squares.length; j++) {
          squares[j] = new JLabel("Square " + j, JLabel.CENTER);
          squares[j].setOpaque(true);
          squares[j].setPreferredSize(new Dimension(73, 73));
        // add labels
        int index = 0;
        gbc.gridx = 0;
        gbc.gridy = 0;
        for(int y = 0; y < 4; y++) {
          for(int x = 0; x < 4; x++) {
            index = y * 4 + x;
            squares[index].setBackground(new Color(r,g,b,90));
            gameBoard.add(squares[index], gbc);
            gbc.gridx++;
            r += inc;
          gbc.gridy++;
          gbc.gridx = 0;
          r = 90;
          g += inc;
        squares[9].setIcon(Unit.noUnit);
      public void show() {
        f.setVisible(true);
      public JLabel getLabel(int index) {
        return squares[index];
    }

  • Transport request for ABAP OO Class

    Hi,
    I have created a class with multiple methods and saved into one TR. Now under the TR contains task and under the task contains
    ->Class (ABAP Objects)
        ZCL_VRL_ZCFA_CLASS =>This is normal and fine.
    Now I have created new class with 3 methods but the methods are recorded separately and the class name recorded separately, please find the below details.
    SD1K977104(Main TR)
    SD1K977105(Task)
    ->Method (ABAP Objects)
        ZCL_BASECLASS             CHECK_CONTRACT_MCON_ACON
        ZCL_BASECLASS             CHECK_CONTRACT_QUOTATION
        ZCL_BASECLASS             CHECK_CREATION_DATE
    ->Class (ABAP Objects)
        ZCL_BASECLASS
    The separate recording will be happen when the TR is transported earlier, whenever creating new class this separate(class and methods) recording should not happen.
    While transporting into Quality the first method trying to activate but the second method(which is called in 1st method) doesnt exist at this time. Anyhow the class(Object) getting transported and activated and working as expected but transport error log appearing in SE09/SE10.
    " Ended with return code:  ===> 8 <==="
    My question is why the class name and method name recorded separately.
    I appreciate your quick reply.
    Regards,
    Vadamalai A.

    Please find the log.
    Log file:                /usr/sap/trans/R3/log/SX1K997477.SX2
               Generation of programs and screens
               Transport request___: SX1K997477
               System______________: SX1
               tp path             : tp
               Version and Release: 340.16.41 640
               Generation of programs and screens for transport request SX1K997477
               Only generates programs with LOAD versions
               Start on 20.05.14 at 23:28:38
               Generation of the transported programs
               Generation of the users of the transported Includes
               Program ZCL_VRL_BASECLASS=============CP, Include ZCL_VRL_BASECLASS=============CM00L: Syntax error in line 000001
               Method 'MCON_FUTURE_DELETE_OPTI' is not declared or inherited in class 'ZCL_VRL_BASECLASS' -
               Ended on 20.05.14 at 23:28:42
               No. of programs  /Min/Avg/Max (sec): 7   0 1 1
               Generation of programs and screens
               End date and time : 20140520232842
               Ended with return code:  ===> 8 <===

Maybe you are looking for

  • Upgrade batch inputs from 4.6C to mySAP ERP 2005

    Hi, we are planning to upgrade from 4.6C to mySAP ERP 2005 (ECC 6.0). We are using batch input/call transaction in various (interface) programs (primarily in modules SD, MM, CS/SM, FI, CO). I would be grateful for any information that helps to estima

  • Photos in iPhoto cannot be found in the Library Folder on the desktop

    I have a perplexing problem with iPhoto 6. A couple of months ago, I started a new Library and renamed it Current iPhoto Library placing it on the Desktop (rather than in the Pictures Folder). I did this because my laptop became too full and I ran ou

  • Content Search web Part on Variations label ?

    Hello Experts,  I have set up Variations in SharePoint 2013 and its working fine. As of now I have only one Label and in Variations Settings I have selected to "Update web part changes to target web pages when Variations source page is updated".  On

  • How do I start my computer over from scatch!

    I am giving my old computer to a friend and I what to copletly start over. how would I do that?

  • Gnome3 suspend

    Hi guys, When suspending in gnome3, the screen seems to fade out, but then come straight back on again, before finally turning off when the computer suspends. This occurs on two different computers, one has an ati graphics card the other is a laptop