Передаваемое значение Java - PullRequest
0 голосов
/ 10 февраля 2010

У меня три программы,

сначала делает тест на селен

import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;
import junit.framework.*;

public class MyTest extends SeleneseTestCase {

int flag_eco;

public void setUp() throws Exception {
    setUp("http://www.mysite.com/", "*iexplore");
}
public void testMyTest() throws Exception {
    selenium.open("/pages/static/homepage_logout.html");
    selenium.type("username", "myuser");
    selenium.type("password", "password");
    selenium.click("//input[@value='LOGIN']");
    selenium.waitForPageToLoad("30000");
    selenium.click("Confirm");
    selenium.waitForPageToLoad("30000");
    selenium.click("link=Applications");
    selenium.waitForPageToLoad("30000");
    selenium.click("link=Journey");
    selenium.waitForPageToLoad("30000");
    selenium.click("link=Launch Application (MUST BE LOGGED IN)");
    selenium.waitForPageToLoad("30000");
    if((selenium.isTextPresent("Please enter one of the following:")))
    {
        System.out.println("Journey Working Fine");
        flag_test= 0;
    }
    else
    {
        System.out.println("Journey Failed");
        flag_test = 1;
    }
    selenium.selectFrame("topmenu");
    selenium.click("link=Home");
}
public static Test suite() {
//method added
return new TestSuite(MyTest.class);
}
public void tearDown(){
//Added . Will be called when the test will complete
selenium.stop();
}

}

затем sendmail получает значения из теста на селен

      import java.util.*;


         public class SendMail
         {
         public void send()
         {


        MyTest Test = new MyTest();
        if (Test.flag_test==1)
          {
            System.out.println("Journey Failed");
        }
        else if(Test.flag_test==0)
          {
            System.out.println("Journey Working Fine");
          }

} }

основной класс, вызывающий оба

        import java.io.*;
     import javax.servlet.*;

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


    MyTest tes = new MyTest();
            junit.textui.TestRunner.run(tes.suite());

    SendMail se = new SendMail();
    se.send();

}
   }

как передать значение флага из MyTest в SendMail

Ответы [ 2 ]

1 голос
/ 10 февраля 2010
  • Флаг должен быть public static (я не вижу его в указанном вами коде) - т.е.

    public class MyTest {
         public static int flag;
         // the rest of the code
    }
    
  • в send() вы можете обратиться к нему с помощью MyTest.flag_test

Обратите внимание, что это не очень хороший способ передачи данных, но в вашем случае нет ничего лучше.

Я думаю, что вы делаете что-то, чего не следует делать вообще. Вот что я предлагаю:

  • переместить код, который меняет флаг, за пределы теста
  • включить его в тест, в соответствующем месте (как будто оно там есть)
  • включить его в SendMail.

Таким образом, вам не нужно вызывать тест, чтобы получить флаг.

0 голосов
/ 10 февраля 2010

Три способа достижения этого 1. Передайте тест в качестве параметра SendMail (уже упоминалось) 2. Напишите слушателю на тесте (Observable pattern / PropertyChangeSupport в Java) и подключите его. (Лучший ИМО) 3. Запишите статический объект, который выступает в роли белой доски, и прочитайте оттуда. (очередь сообщений бедняков)

...