我编写了以下代码,我已经设法测试了Get语句,但是我如何在下面的代码中测试void语句,因为你可以看到我使用了flygplan2.andraHojd来改变int,但我该怎么做显示该更改的结果,我可以在skrivaUTinfo类中显示它)
请参阅下面的代码
//Klass
public class FlygPlan {
int hojd;
int flygriktning;
int hastighet;
String modellbeteckning;
//Konstruktor
public FlygPlan(int hojd, int flygriktning, int hastighet, String modellbeteckning) {
this.hojd = hojd;
this.flygriktning = flygriktning;
this.hastighet = hastighet;
this.modellbeteckning = modellbeteckning;
}
//Main-metoden
public static void main(String[] args) {
FlygPlan flygplan1 = new FlygPlan (1000, 1, 60 , "Hejsan");
FlygPlan flygplan2 = new FlygPlan (10, 4, 70, "Sohail");
flygplan1.skrivaUt();
flygplan2.andraHojd(60,70);
}
public void andraHojd(int hojd, int nyHojd)
{
hojd = nyHojd;
}
public static int visaHojd(int hojd)
{
return hojd;
}
public void andraRiktning(int flygriktning, int nyFlygriktning)
{
flygriktning = nyFlygriktning;
}
public static int visaRiktning(int flygriktning)
{
return flygriktning;
}
public void andraHastighet(int hastighet, int nyHastighet)
{
hastighet = nyHastighet;
}
public static int visaHastighet(int hastighet)
{
return hastighet;
}
public void andraModellBeteckning(int modellbeteckning, int nyModellbeteckning)
{
modellbeteckning = nyModellbeteckning;
}
public static String visaModellBeteckning(String modellbeteckning)
{
return modellbeteckning;
}
public void skrivaUt()
{
System.out.println(" flygets modellbeteckning är " +modellbeteckning);
System.out.println(" flygets flygriktning är " +flygriktning);
System.out.println(" flygets hastighet är " +hastighet);
System.out.println(" flyget flyger på höjd(m) " +hojd);
}
}
答案 0 :(得分:0)
我最初看到这个代码有几个问题。
为什么要让你的吸气者static
?这意味着它们不与任何特定的对象实例相关联,因此实际上无法工作。
但是,你没有注意到这一点,因为你将值传递给你的“getter”,方法直接返回。这是有意的(可能不是,因为该方法什么都不做)? Getters通常不带参数,并返回一个实例字段,例如:
public int visaHojd()
{
return hojd;
}
在类似的意义上,你将两个参数传递给你的setter,这也很不寻常 - 特别是你的方法再一次没做什么(它设置一个局部变量然后退出,没有“外部可见的”变化)。您在阴影 hojd
字段中传递的第一个hojd
参数并将其隐藏,因此该字段永远不会更新。您可以将setter简单地写为:
public void andraHojd(int nyHojd)
{
hojd = nyHojd;
}
要回答关于测试的实际问题,您需要考虑实际声明的方法。在类的上下文中,setter声明的效果是什么?对于这个简单的类,这意味着下一次调用getter将返回该值。所以你不能孤立地测试那个方法;您需要一起调用这些方法来测试它们是否满足此要求。
或许这样的事情:
public void testSetter() {
int testValue = 42; // arbitrary
FlygPlan testObj = new FlygPlan();
// do the test
testObj.andraHojd(testValue);
int result = testObj.visaHojd();
// assert correctness, i.e. that the same value was returned from the
// getter as was passed to the setter (would usually use something like
// JUnit here)
assert testValue == result;
}
答案 1 :(得分:0)
void
表示方法不返回任何内容。
测试的一种方法是放置System.out.println()
并检查它是否被调用。
并且可以在调用setter后使用getter打印值。
我确实在您的代码中看到了一些问题:
一个。 static
getter方法返回实例成员;
B中。 getter通常不带任何参数。 我不这么认为你想这样做。
public static int visaHastighet(int hastighet)
{
return hastighet;
}
应该是这样的:
public int visaHastighet()
{
return hastighet;
}
℃。你的setter没有正确放置,因为它只修改了局部变量。
public void andraHojd(int hojd, int nyHojd)
{
hojd = nyHojd;
}
应该是这样的:
public void andraHojd(int hojd)
{
hojd = nyHojd;
}
答案 2 :(得分:0)
public void andraHojd(int hojd, int nyHojd)
{
hojd = nyHojd;
}
这种setter方法和类似的方法可能不是你想要的。您将整数变量作为参数(hojd)
传入,并根据另一个方法参数(nyHojd)
设置它的值。当该方法存在时,此状态更改将丢失。我想你想要的是:
public void andraHojd(int hojd)
{
this.hojd = hojd;
}
就你的问题而言:
如何在I代码中测试下面代码中的void语句 使用了flygplan2.andraHojd来改变int,但我该如何显示 该变化的结果,我可以在skrivaUTinfo类中显示它)
您可以在课程上编写toString()
方法打印出其成员字段,然后在FlygPlan
@覆盖 public String toString(){ 返回“hojd =”+ this.hojd“+”flygriktning =“this.flygriktning; }