【问题标题】:I have to test Java我必须测试 Java
【发布时间】:2012-01-22 07:01:14
【问题描述】:

我在课堂上被告知我必须在 main 方法中编写和测试我的代码,我编写了它,但我不知道如何测试它。我应该如何测试我的方法?我应该接受用户输入,然后得到第一个字母、最后一个字母等。

import java.util.Scanner;

public class Word
{
    public static void main(String[] args)
    {

    }

    public String word;

    public void Word()
    {
        String word = "";
    }

    public void Word(String word1)
    {
        String word = word1;
    }

    public String getWord()
    {
        return word;
    }   

    public void setWord(String newWord)
    {
        String word = newWord;
    }

    public void getFirstLetter()
    {
        String firstLetter = word.substring(0, 1);
    }

    public void getLastLetter()
    {
        String lastLetter = word.substring(word.length() - 1, word.length());
    }

    public void removeFirstLetter()
    {
        String noFirstLetter = word.substring(1, word.length());
    }

    public void removeLastLetter()
    {
        String noLastLetter = word.substring(0, word.length() - 1);
    }
    public int findLetter (String parameter)
    {
        word.indexOf(parameter);
        return 1;
    }
}

【问题讨论】:

  • 是的,但不是针对学校的,这是针对校外课程的。
  • 或许可以先在你的 main 方法中加入一些代码。创建 Word 对象并调用方法等。
  • 啊,今天的年轻人——你不知道自己有多幸运!当我学习编程时,我们必须在纸上编写代码,翻译成 fortran,从代码中创建打孔卡,然后将我们的打孔卡提交给计算实验室进行通宵运行。然后再次调试并重复整个过程! 现在,您已经在自己家中的桌面上安装了计算实验室——所以实验!创建代码,坏代码,好代码,任何代码!只需创建、测试、修改,最重要的是,try

标签: java methods main


【解决方案1】:

您通过使用一些定义的输入调用方法来测试您的方法,并将结果与​​您的预期输出进行比较。

例子:

假设你有这样一个方法:

public static int add(int a, int b) {
  return a + b;
}

你可以这样测试它:

int result = add( 3, 5);
if( result != 8 ) {
  //method is wrong
} 

因此,基本上您定义了一个“合同”,即方法获得什么输入以及结果应该是什么(根据返回值或其他更改的状态)。然后你检查你是否得到了输入的结果,如果是,你可以假设该方法正常工作。

为了非常确定(您通常不能完全确定),您会使用不同类型的输入多次测试该方法(尽可能多地测试不同的情况,例如短词、长词) .

您还经常测试您的方法如何处理错误输入,例如通过传递 null 或空字符串。

【讨论】:

    【解决方案2】:

    你应该看看像junit这样的工具。

    您可以创建一个简单的测试类并测试您的类及其行为。

    imports ...;
    
    public class MyTest{
    
        @Test
        public void testMyClass(){
            Word w= new Word();
            w.setWord("test");
            Assert.assertEquals(w.getFirstLetter(), "t");
        }
    }
    

    使用 Eclipse 之类的工具,您可以很好地运行这样的测试。

    【讨论】:

    • 我只是认为您的 getFirstLetter 实际上不是吸气剂。但是,这应该显示一般如何进行测试...
    • 除非getFirstLetter() 的返回类型为void,否则测试代码将无法编译。但我同意,他应该学习如何使用 JUnit(或类似的);它会立即指出他的代码存在的所有问题(一旦更改返回类型,测试将最终得到 NPE)
    【解决方案3】:

    只是一个提示:你非常接近你需要一个 Word 实例,而不是你可以调用你的方法

    public static void main(String[] args) {
          Word test = new Word();
          test.setWord("something");
          // here you might read javadoc of the String class on how to compare strings
    }
    

    编辑: 我忽略了这一点:

    public void setWord(String newWord)
    {
         String word = newWord;
    }
    

    您编写的代码创建了一个变量word,并将newWord 分配给它,然后消失。 如果您(显然)想要设置一个类的成员,您应该使用 this 至极引用该实例(您在 main() 中创建)。

    public void setWord(String newWord) {
       this.word = newWord;
    }
    

    【讨论】:

    • 所以 test.setWord("somthing");可以是扫描仪的用户输入吗?
    • 这就是我所拥有的,然后当我打印 test.word 时它会打印“null”
    • @Jerryg225 "something" 需要是来自任何来源的字符串。第二我更新了我的答案。
    【解决方案4】:

    既然我会说这是作业,我会尽量不明确给出答案。在 main 方法中,你应该设置你的 word,然后调用每个方法并打印输出以验证它是否正确。

    【讨论】:

      【解决方案5】:

      同意杰森的观点。如果你想测试一些东西,只需System.out.println() 它。但是在你的方法中,你的返回类型不是String,而是void,所以你可以改变它,然后在主程序run上打印出来。

      如果没有,只需将 System.out.println() 放入您的 void 方法中。应该没有太大问题!

      【讨论】:

        猜你喜欢
        • 2015-12-03
        • 2018-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-02
        • 2016-09-08
        • 1970-01-01
        相关资源
        最近更新 更多